¿QUÉ ES UN SOFTWARE?
Antes de hablar sobre "El Ciclo de Vida del Software" es importante saber a qué nos referimos con software.
Sommerville (2005) tiene una definición más amplia, donde el software no son sólo programas, sino todos los documentos asociados y la configuración de datos que se necesitan para hacer que estos programas operen de manera correcta. Por lo general, un sistema de software consiste en diversos programas independientes, archivos de configuración que se utilizan para ejecutar estos programas, un sistema de documentación que describe la estructura del sistema, la documentación para el usuario que explica cómo utilizar el sistema y sitios web que permitan al usuario descargar la información de productos recientes (p. 5-6).
Recordando la teoría de sistemas; Según Esponoza (2007), Un sistema por definición está compuesto de partes o elementos interrelacionados. Esto se aplica a todos los sistemas mecánicos, biológicos y sociales. Todos los sistemas deben tener más de dos elementos y estos a su vez estar interconectado (p. 1).
Dado la definición anterior, un sistema puede ser casi cualquier cosa, esto a la vez permiten ver las cosas como un TODO, dentro de sistemas complejos (suprasistemas) existen otros sistemas más pequeños (subsistemas).
De este modo se dice que un software es un conjunto de elementos (sistema) que permiten trabajar en conjunto para un determinado fin.
CICLO DE VIDA DEL SOFTWARE
Cuando se habla del ciclo de vida del software, se hace mención a la vida de este, recordando que todo sistema ya sea software o no, tiene un inicio y un final (lo determinará el desarrollador del software) . Este ciclo de vida del software no se inicia cuando se crea directamente el programa, sino, antes; Aquí es donde entra las fases del ciclo de vida del software.
El ciclo de vida del software puede variar, dependiendo de cómo se pueda visualizar, al igual que las etapas o fases de este ciclo, en el siguiente ejemplo (Ver Figura Nº1) se detallan las fases de un ciclo de vida del software:
Figura Nº1: Ciclo de Vida del Software
1. Requerimientos. Se presenta a continuación la definición existente en el glosario de la IEEE de lo que es un
“Requerimiento”:
"Una condición o capacidad que necesita un usuario para resolver un problema o lograr un objetivo" (Std 610.12-1900, IEEE: p. 62):
"Una condición o capacidad que debe cumplirse o poseído por un sistema o componente del sistema para satisfacer un contrato, estándar, especificación u otros documentos impuestos formalmente" (Std 610.12-1900, IEEE: p. 62):
De este modo, el cliente, el cual va a dirigirse hacia el o los desarrollador(es) del Software, dará las detalles necesarios para que se identifique el problema y se proceda a la siguiente fase del ciclo.
2. Diseño: En esta fase se desarrolla la arquitectura del software mediante el uso de diagramas de flujo, Lenguaje de Modelado Unificado (UML), y otros recursos de modelado. Este proceso incluye la definición de la estructura del sistema, la interacción entre sus componentes y la especificación de los módulos y subsistemas que conforman el proyecto.
Además, se seleccionan las tecnologías y lenguajes de programación más adecuados para la creación del programa. La elección se basa en los requisitos del proyecto, las características del software a desarrollar, la compatibilidad con otras herramientas y sistemas, y las habilidades del equipo de desarrollo.
Se planifica cómo será la interacción del usuario con el software, considerando aspectos como la usabilidad, accesibilidad, y experiencia de usuario.
Si el software requiere almacenamiento de datos, se diseña la estructura de la base de datos, incluyendo tablas, relaciones, y restricciones necesarias para asegurar la integridad y eficiencia del almacenamiento.
A menudo se crean prototipos o maquetas del sistema para visualizar y validar la funcionalidad antes de la implementación completa. Esto ayuda a identificar posibles mejoras y ajustes necesarios en una etapa temprana.
4. Pruebas: Esta fase es crucial y se divide en dos etapas principales. Primero, la fase BETA, donde el sistema o programa se pone a prueba con un público seleccionado. Este grupo de usuarios se encarga de utilizar el sistema en condiciones reales, con el objetivo de identificar posibles errores o bugs en su ejecución. Una vez detectados, estos errores se corrigen para mejorar el rendimiento y la estabilidad del sistema. Además, se realizan pruebas unitarias, que consisten en evaluar individualmente cada componente del sistema.
5. Despliegue: Después de desarrollar el programa y realizar pruebas exhaustivas para identificar y corregir errores, se procede a la etapa de despliegue. En esta fase, el sistema se pone en funcionamiento en el entorno de producción, donde estará disponible para todos los usuarios finales. Este paso incluye la configuración del entorno, la migración de datos, y la verificación final de que todos los componentes del sistema funcionan correctamente. El objetivo del despliegue es garantizar que el sistema esté completamente operativo y listo para su uso, proporcionando a los usuarios una experiencia fluida y sin problemas.
6. Operación y mantenimiento: Según Preston (2023), esta fase se produce durante el uso efectivo del producto por parte de los usuarios finales. Proporcionar actualizaciones y ajustes al sistema de software después del lanzamiento permite modificarlo para que se adapte mejor a las necesidades de los usuarios. También puede responder a cualquier error que se produzca y modificar el sistema para tener en cuenta otros problemas.
Esta es también una oportunidad para personalizar mejor el sistema para sus usuarios, ajustando o agregando nuevas funciones según el uso. Al responder a cualquier uso imprevisto del sistema o a cualquier solicitud que hayan hecho los usuarios finales, puede agregar o cambiar funciones dentro del sistema para que sea más eficaz para quienes lo usan (Preston, 2023).
VIDEOS SUGERIDOS
REFERENCIAS
IEEE. (1990). IEEE Standard Glossary of Software Engineering Terminology. IEEE Std 610.12-1990. Recuperado de https://www.informatik.htw-dresden.de/~hauptman/SEI/IEEE_Standard_Glossary_of_Software_Engineering_Terminology%20.pdf.
Arias Chaves, M. (2005). La ingeniería de requerimientos y su importancia en el desarrollo de proyectos de software. Revista Educación en Ingeniería, (1), 111-116. Recuperado de https://www.redalyc.org/pdf/666/66612870011.pdf.
Preston, R. (2023, 10 de marzo). 7 fases del ciclo de vida del desarrollo de sistemas (con consejos). Indeed Career Guide. Recuperado de https://www.indeed.com/career-advice/career-development/system-development-life-cycle.
Esponoza, J. (2007). Teoría de Sistemas. Recuperado de https://gc.scalahed.com/recursos/files/r161r/w25329w/Rec1_sem3.pdf.
Sommerville, I. (2005). Ingeniería del Software (7ª ed.). Recuperado de https://ulagos.wordpress.com/wp-content/uploads/2010/07/ian-sommerville-ingenieria-de-software-7-ed.pdf.
Comentarios
Publicar un comentario