Ciclo de vida del software
Fuente: https://www.timetoast.com/timelines/linea-de-tiempo-de-ingenieria-de-software

Ciclo de vida del software

¿Habéis oído hablar del “ciclo de vida del software”? Pues bien, ese nombre que queda muy chulo no, es más, que la historia durante el tiempo de cualquier tipo de software. Lo que es lo mismo, cuáles son las fases que debe pasar un programa durante toda su vida.

Para el estudio de los ciclos de vida, somo somos informáticos y nos gusta la seguridad, tendemos a crear metodologías con fases o procesos. Sea el tipo de programa, o incluso su complejidad, deberá pasar por estas fases, siendo estas más o menos amplias en el tiempo. Pero tendrá que pasar el programa por todas sí o sí.

Sea cual sea la metodología que usemos, siempre empiezan por fases. En este caso no es una excepción, y tenemos la primera fase que recibe el nombre de “definición de necesidades”. En esta fase se engloba todo lo que pasa cuando alguien tiene la idea de realizar un programa.

Luego dependiendo de lo grande que sea la empresa la idea pasa por mas o menos departamentos dándole forma. Se define que tareas realizara el programa. Esta fase se conoce como “análisis

Luego tendremos responder a las preguntas ¿a que afectara este programa?, ¿si el solo hace lo que tiene que hacer y no necesita datos de entrada o salida?, ¿si necesita o no una arquitectura que soporte ese programa? ¿cómo será el programa?, ¿en un solo modulo o varios, en varias partes?, etc. etc, Con estas respuestas, entramos en la fase de "diseño",

Seguimos y llegados a un punto donde esas especificaciones llegaran a los programadores que lo programan. Y los programadores programaran el programa. A esta fase se conoce como “codificación”.

Ya tenemos el programa realizado. Podíamos probarlo, ¿no? porque no sabemos si lo que ha programado es lo que se ha pedido y realiza todas las tareas que se esperan del programa. Se prueba que el programa se integra con otras partes de la empresa, si los requerimientos de la empresa de calidad y buenas prácticas se han seguido en la realización del programa, etc. Y os preguntareis, ¿cómo se puede llamar esta fase?, si lo habéis adivinado: “pruebas” ;-)

Después de la fase de pruebas, viene la fase de "validación", En esta fase, se realiza lo que se conoce como puesta en producción del programa. Que no es más que hacer que el destinatario del programa lo use. Este programa tendremos que instalarlo en algún sitio, además, incluiremos la formación a los usuarios y los procesos que tienen como fin la aceptación por parte del usuario del programa una vez que indica que esta todo OK.

Como en todos los ámbitos de la vida, los programas se van usando, y pasa el tiempo. Poco a poco al programa le vamos sacando problemas, o mejoras. Y claro, tendremos que actualizarlo. En esta fase llamada “mantenimiento y evolución” nos encargaríamos de las mejoras del programa. Hay que indicar, que, en este paso, volvemos al paso primero, con lo que se empieza por la fase de definición de necesidades y seguiríamos con el resto de las fases.

Llegado a un punto de su vida, en que el programa ya no cumple con su función para lo que lo creamos. Entraríamos en una nueva fase que llamaremos “obsolescencia”, que tiene el fin de que el programa muera.

¿Seguridad?, ¿qué seguridad?

Y preguntareis, después de esa chapa, ¿dónde entra la seguridad?

Existen estudios de costes en el que se han estudiado múltiples proyectos desde el punto de vista del ciclo de vida del software. Las conclusiones de estos estudios son claras, y se pueden resumir en que "cuanto más cerca del inicio del proyecto entre en juego la seguridad, más barato saldría el proyecto".

Puede parecer un poco raro, eso de gastarse dinero en meter mas gente en los proyectos, para que sea mas barato. Por poner un ejemplo claro. en las fases de diseño podemos definir que se use tal lenguaje, tal librería o tal elemento de software. Pero qué pasa si hay que actualizar ese elemento o se constata que hay que cambiarlo porque tiene muchos fallos de seguridad. Esos cambios son muy costosos una vez que esta realizado la codificación, etc.

Además de añadir al experto de ciberseguridad para que ayude en las diferentes fases del desarrollo del programa, existen otro tipo de herramientas que pueden ayudar mucho.

Herramientas de auditoria de código

En la parte de codificación, existen programas que según esta el programador programando le informa de problemas de seguridad que tiene su código. Por ejemplo, que usa librerías antiguas, que usa expresiones que no son muy seguras, etc., realizando recomendaciones de como se debe de realizar la codificación.

Este tipo de auditorías se realiza usando métodos estáticos, esto es, se coge el código sin compilar y se pasa cada línea por el programa y como resultado da un informe indicando las carencias. Existen también programas que auditan el código compilado, pero digamos que tiene más problemas y es recomendable la opción de auditar el código a partir del propio código fuente.

Existen varios programas de este tipo, siendo comerciales o no, que tienen más o menos lenguajes a los que pueden auditar. Para elegir uno u otro, debemos tener en cuenta en que lenguaje vamos a programar y elegir el software para la auditoria que mejor se adapte a nuestros requisitos.

Herramientas de auditoria dinámica

Existe otro tipo de auditorías de seguridad que se llaman genéricamente auditorias dinámicas. Este es el nombre “chulo” de hacking ético. Con este tipo de auditorías comprobamos si el programa tiene problemas de seguridad en el funcionamiento mismo del programa la interrelación entre las diferentes partes sacando a la luz fallos de seguridad que pueden comprometer a la empresa.

Para este tipo de auditorías también existen programas comerciales o no, que auditan los servicios, y como resultado presentan un informe con los fallos encontrados y con las recomendaciones para solucionarlos.

Conclusiones

La mayoría de las empresas no tienen implantado un esquema que defina el ciclo de vida del software que crean. Es primordial que las empresas se den cuenta que con un esquema de este tipo los desarrollos que realizan serán más baratos, además de tener más calidad y ser más fácilmente actualizables cuando se implementen mejoras.

Si bien es importante contar con un esquema de definición del ciclo de vida del software, es también muy importante la implantación de controles en dicho ciclo. Estos controles pasan por hacer uso de herramientas de auditoria de código y sistemas de hacking ético.

Es muy importante la concienciación del usuario, pero debemos de realizar todo lo que este en nuestra mano para que el software que use el usuario sea seguro, que no tenga problemas, que tampoco permite al usuario poner en peligro ni a su equipo ni a la empresa. 

Sofia Rico

Project Management | Business Development | Digital Marketing

3mo

Gracias, muy útil! eso sí, tiene un montón de erratas...

Like
Reply

To view or add a comment, sign in

Explore topics