Los ingenieros de sistemas han visto durante mucho tiempo la V como una parte fundamental de la buena ingeniería. Sin embargo, últimamente, la V de la ingeniería de sistemas ha recibido una mala reputación. La nueva generación de ingenieros la considera un símbolo de las prácticas de ingeniería lentas y en cascada. Consideran que estas prácticas son irrelevantes para la velocidad que requiere el desarrollo de software.
Los defensores de la ingeniería tradicional prefieren la V a los métodos «ágiles». Esto es especialmente cierto cuando se trata de sistemas críticos.
¿A quién debemos creer?
Bueno, si somos honestos, cuando la V existe como una pasada gloriosa para todo un sistema, la nueva generación hace un gran punto. La V realmente puede retrasar el buen desarrollo de software.
En su núcleo, la V de Ingeniería de Sistemas es una construcción lógica. Describe el descubrimiento de los requisitos del sistema dividiendo un sistema en partes más pequeñas y luego ensamblando y validando esas partes.
Los ingenieros de sistemas aplican la V en varios contextos. La mayoría de las veces, la V aparece en grandes organizaciones, como el Departamento de Defensa de los Estados Unidos. También es prominente en instituciones académicas.
Estos grandes programas u organizaciones utilizan la V como parte de su proceso de ejecución de alto nivel. El flujo de trabajo general tiene siete fases:
El proceso comienza en el lado izquierdo de la V donde (1) se generan los conceptos. A continuación, (2) se definen, descomponen y asignan los requisitos de todo el sistema. A continuación, (3) se diseñan en detalle los componentes del sistema.
La implementación se produce en la parte inferior de la V (4). Aquí es donde se crean los componentes diseñados de acuerdo con los requisitos de la fase anterior del proceso.
Subiendo por el lado derecho de la V, esos componentes se (5) integran juntos en el sistema final. A continuación, el sistema integrado se verifica para garantizar que cumple los requisitos originales y se valida para garantizar que satisface las necesidades del usuario (6). Por último, (7) el sistema se entrega y se mantiene.
Desafíos de la V
La ejecución del proceso de la V resulta problemática para muchos proyectos grandes, especialmente los que incluyen software.
Integración
Un problema importante es que la integración se produce demasiado tarde en el proceso de desarrollo. Los programas que dependen de la V esperan hasta que los componentes de software estén completos para reducir el costoso retrabajo de integración.
La integración manual de los componentes de software lleva una enorme cantidad de tiempo. La realidad que todos conocemos es que el software nunca está terminado. Las actividades de integración que se dejan para el final se apresuran para cumplir con el calendario del programa.
En la V, los componentes integrados suelen cumplir con los requisitos funcionales, pero a menudo no son seguros, ni correctos.
Verificación &Validación
Esperar hasta que el sistema se haya integrado completamente para realizar la verificación y validación (V&V) agrava este problema. La aplicación de correcciones provoca ondas en todo el sistema, por lo que es difícil y costoso abordar los problemas que surgen durante la V&V.
Los programas a menudo ponen en marcha correcciones «a nivel de sistema» en lugar de resolver la raíz del problema – un enfoque de parche. El riesgo del software se suele mitigar con prácticas como cortafuegos a nivel de sistema y software antivirus en lugar de abordarlo en el código.
Las tiritas disminuyen la posibilidad de que los usuarios se encuentren con el fallo, pero el fallo en sí no se soluciona y sigue acechando en el sistema.
Enfrentarse al desafío
Los conceptos de la V de Ingeniería de Sistemas no son el problema – es la estructura de la V la que no se aplica al software
Las técnicas modernas pueden permitir la integración continua del software, incluso en programas grandes. El uso de herramientas y procesos que abarcan la integración temprana y la verificación no niegan los conceptos centrales de la V – mejoran la V para que funcione para el desarrollo de software.
El resultado final es un software que es correcto en la creación, y un sistema que es más barato, más seguro y más rápido de entregar.