27 junio 2016

Ingeniería del software libre

En la tesis de maestría de Turner, publicada el año 2012 con el título “Software libre y abierto: Comunidades y redes de producción digital de bienes comunes”, se indica que los programas y aplicaciones que no permiten el acceso a ninguno de los componentes del código fuente, privando de ésta y otras libertades a los usuarios, son conocidos como software privativo. En general, se puede decir que la mayoría del software que se comercializa a gran escala es software privativo. Este tipo de programas utilizan licencias que siempre estipularán que el usuario no puede modificar el producto adquirido, tampoco distribuirlo haciendo copias del mismo, entre otras muchas restricciones avaladas por las leyes de derecho de autor, conocidas generalmente por su término en inglés, copyright. Se dice que un programa es de fuente abierta, cuando permite al usuario observar el código fuente. La apertura de códigos de programación es condición necesaria, aunque no suficiente, para calificar a una aplicación como software libre. Si un programa muestra su código fuente, permite dos de las libertades fundamentales que son características del software libre: Estudiar y modificar el código; pero para ser verdaderamente libre, además, debe permitir la distribución y el uso libres. Richard Stallman, en el libro publicado el año 2004 con el título “Software libre para una sociedad libre”, menciona que no necesariamente se trata de que las aplicaciones sean gratuitas, pero que sí otorguen la libertad al usuario de hacer uso del programa y de redistribuirlo virtualmente. Dado que se hace referencia a la libertad y no al precio, no existe contradicción alguna entre la venta de copias y el software libre. De hecho, la libertad para vender copias es crucial: Las colecciones de software libre a la venta en formato de disco compacto son bastante importantes para la comunidad y venderlas es una forma de recaudar fondos para el desarrollo de software libre.

En el artículo del investigador Robles, publicado el año 2002 con el título “Ingeniería del Software Libre. Una visión alternativa a la ingeniería del software tradicional” se menciona que uno de los grandes problemas de la ingeniería del software ha sido y es que no ha sabido adaptarse consecuentemente a su propia definición. Esto es algo que se puede considerar como una especie de traición a sí misma, a sus propios fundamentos. El enfoque sistemático y cuantificable ha tenido siempre como barreras las propias de las formas en las que el software se ha desarrollado y distribuido. El formato binario del software, la opacidad en los modelos de negocios, los secretos y barreras comerciales se encuentran entre las principales causas que han imposibilitado estudios cuantitativos y cualitativos a gran escala del software cuyos resultados pudieran ser verificados sistemáticamente por equipos de investigación independientes. Y es aquí donde el software libre puede dar nuevos aires a la ingeniería del software. Desde hace más de una década, el software libre ha venido experimentando un gran auge en cuanto a uso, aceptación y, por supuesto, desarrollo. La emergencia de Internet junto con las características de las licencias que “invitan” a todos a formar parte del equipo de desarrollo, han propiciado que no sólo se pueda contar con el código fuente, sino tomar medidas de los archivos de las listas de correo donde viene plasmada la comunicación del proyecto, los repositorios de versiones gracias a los cuales es posible ver la evolución, etc. De todas estas fuentes se puede extraer una gran cantidad de información de interés, en la mayoría de casos incluso de manera automática. Por tanto, el software libre ofrece la oportunidad de conocer más a fondo el proceso de concepción del software, aportando nuevas evidencias y experiencias.

En el reporte técnico sobre ingeniería del software, el investigador Callejas, en el reporte publicado el año 2006 con el título “La ingeniería del software libre y sus herramientas aplicadas a proyectos informáticos”, señala que la ingeniería del software libre permite que la metodología para el desarrollo de aplicaciones se lleve a cabo de manera amplia, ya sea utilizando un enfoque estructurado de análisis y diseño, un enfoque orientado por objetos o algún otro tipo de paradigma; además no limita a los analistas y diseñadores a utilizar una técnica de modelado y diagramación, como el lenguaje de modelado unificado o el modelado estructurado, ni ofrece recomendaciones que permitan evaluar el nivel de calidad de una organización, como lo promueve el modelo de madurez y capacidad del software. Más bien se fundamenta en que se debe trabajar en equipo, con el fin de fomentar una mayor participación de elementos para el desarrollo óptimo de aplicaciones, sin dejar de lado la utilización de técnicas y herramientas. Además, se debe tener en cuenta el tiempo y los recursos asignados para cumplir con las tareas involucradas, evitando la pérdida de tiempo o abandono de los proyectos. Con la ingeniería del software libre se pretende promover el uso de sistemas operativos, lenguajes de programación, bases de datos y demás herramientas de software de carácter libre para la creación de aplicaciones.

Robles, en el artículo mencionado en párrafos anteriores, menciona que la ingeniería del software libre no sólo pretende ser beneficiosa para la ingeniería del software tradicional, también pretende ser en gran medida, para el software libre. Si los cálculos de plazos y de costos en los proyectos de software estudiados tradicionalmente son difícilmente cuantificables, dentro del mundo del software libre son prácticamente utópicos. En cierta medida, la ingeniería del software libre pretende despojar de esa “magia” que parece que es intrínseca a los desarrollos de software libre y cuantificar unos parámetros que permitan predecir con exactitud costos, plazos y talento humano. Como consecuencia, aunque se pueda considerar que el software libre adolece de estos métodos en contraposición a las formas de desarrollo tradicionales, también es cierto que, por los motivos que se están desarrollando, no le falta precisamente potencial para que esta situación cambie en el futuro. La comparación entre diferentes proyectos de software libre, así como el análisis de aquéllos que tienen éxito también debe servir para que la experiencia en la creación de software libre quede plasmada en conocimiento para proyectos futuros. En este sentido, paradójicamente, la ingeniería del software libre puede ser la puerta de entrada de métodos auspiciados por la ingeniería del software tradicional que se muestren exitosos o eficaces en proyectos de software libre.

1 comentario: