UNIR Revista
Las técnicas ágiles se caracterizan por lograr la satisfacción del cliente a través de entregas rápidas y frecuentes de software funcional (es decir, interacciones cortas). Se basan en la utilización de un modelo de desarrollo iterativo e incremental,
Actualmente las organizaciones que desarrollan software están creando entornos de desarrollo que centran sus objetivos en alcanzar productos funcionales en el período más corto de tiempo y utilizando la menor cantidad de recursos posible. Implantan técnicas ágiles como por ejemplo ‘SCRUM’, una de las más conocidas y utilizadas.
Estas técnicas ágiles se caracterizan por lograr la satisfacción del cliente a través de entregas rápidas y frecuentes de software funcional (es decir, interacciones cortas). Se definen por utilizar un modelo de desarrollo iterativo e incremental, con aceptación de cambios en los requisitos finales, integración del cliente en el proceso de desarrollo, implementación en paralelo de varias versiones y equipos de desarrollo autónomos. Entre sus principales ventajas se encuentra la adaptación rápida al cambio y la monitorización del nivel de progreso, consiguiendo de cualquiera de los artefactos un producto del desarrollo.
Además, actualmente, dado la cantidad de incidentes de seguridad que a diario ocurren en las organizaciones por software con errores de seguridad, es necesario que, aparte de producir software que funcione correctamente, este también debe ser seguro. Para ello las organizaciones deben insertar buenas prácticas de seguridad en el proceso de desarrollo de software (SDLC, Software Development Life Cycle) al objeto de obtener software más seguro o confiable. Estas actividades tienen por objetivo reducir el número de debilidades de diseño y errores de codificación. A este nuevo ciclo de vida con buenas prácticas de seguridad incluidas se le suele denominar S-SDLC [1].
Elementos cruciales como la “calidad” o la “seguridad” del software no se tienen en cuenta en las técnicas de desarrollo de software ágil.
En este escenario, aspectos cruciales como la “calidad” o la “seguridad” del software no se tienen en cuenta en las técnicas de desarrollo de software ágil. Estas técnicas se basan en el ‘Manifiesto Ágil’ cuyo único objetivo principal es producir software que funcione correctamente lo más rápido posible. Estos elementos son analizados en detalle en el Máster Universitario online en Ingeniería de Software y Sistemas Informáticos de UNIR.
Mucha discusión y debate se ha producido respecto a si es posible que los proyectos de software utilicen las técnicas ágiles para producir software seguro. En la siguiente tabla se resume, para cada principio básico del Manifiesto Ágil [2], su contribución u obstrucción al desarrollo de un software seguro.
Nº | Principio | Implicación | Explicación |
1 | Prioridad principal es satisfacer al cliente. Esto se debe lograr de forma temprana y continua a través de entrega de software utilizable. | Obstructiva | A menos que el cliente muestre una sensibilidad muy alta por la seguridad, se obviarán las pruebas de seguridad y si se hacen, no se les asigna tiempo suficiente para especificar, verificar y probar los requisitos de seguridad. |
2 | Se permite el cambio de requisitos, incluso en la fase más tardía del proceso de desarrollo de procesos. Ventaja competitiva. | Obstructiva | A menos que el cliente esté dispuesto a permitir la ampliación del tiempo necesario para evaluar el impacto en la seguridad del software de cada nuevo requisito o cambio y cambiar las restricciones de seguridad y mitigaciones de riesgo asociados con cada requisito funcional. |
3 | Producción de frecuentes entregas de software. Idealmente, varías a la semana. Se da preferencia a la reducción de los tiempos de entrega. | Obstructiva | A menos que el cliente de mayor prioridad a la seguridad que a la necesidad de entregas rápidas. |
4 | El proyecto es construido en base al compromiso, motivación y participación de sus componentes. | Neutral | Podría ser obstructiva si los componentes del proyecto ignoran las prioridades de seguridad. |
5 | Los clientes, gerentes y desarrolladores deben colaborar diariamente, durante todo el desarrollo del proyecto. | Neutral | Podría ser contributivo si el equipo de desarrollo contara con expertos de seguridad y el equipo del cliente incluye la seguridad como una de sus prioridades |
6 | Los desarrolladores deben tener los recursos y apoyo que necesitan. | Neutral | Podría ser contributivo si el ambiente de desarrollo incluye herramientas, plataformas, procesos y prácticas destinadas a producir software seguro. |
7 | La dirección y el cliente confían en el trabajo hecho por los desarrolladores. | Obstructiva | A menos que los desarrolladores estén fuertemente comprometidos y sean capaces de aplicar prácticas de seguridad, herramientas e hitos de control en el ciclo de vida. |
8 | La forma más eficiente y eficaz de transmitir información a los componentes de un equipo de desarrollo es a través de la comunicación cara a cara. | Obstructiva | El proceso de garantía de la seguridad del software se basa en la documentación de las evidencias para que puedan ser evaluadas independientemente por expertos externos al equipo de desarrollo del proyecto. |
9 | La producción de programas útiles es la principal medida del éxito. | Obstructiva | Si la validez del software se mira solo desde el punto de vista de funcionalidades, no se permitirá la realización de escaneos de vulnerabilidades, pruebas de penetración, o cualquier otra prueba de seguridad. |
10 | La agilidad se ve reforzada por la continua atención a la excelencia técnica y buen diseño. | Contributiva | Especialmente cuando «la excelencia técnica y buen diseño» reflejan una fuerte experiencia en el compromiso de asegurar el desarrollo de software. |
11 | Sencillez, que se define como el arte de maximizar la cantidad de trabajo no realizado, es esencial para el éxito de proyectos de software. | Contributiva | Si la sencillez es una característica tanto del diseño como del código del software, será más fácil de analizar su seguridad. |
Por Juan Antonio Sicilia Montalvo
Director académico del Máster en Ingeniería de Software y Sistemas Informáticos de UNIR.