Este documento resume investigaciones sobre el estado actual de la Ingeniería del Software Libre. Presenta definiciones de software libre e ingeniería de software. Explica que aunque el software libre ha existido por décadas, sólo recientemente se ha empezado a estudiar sus modelos de desarrollo desde la perspectiva de la ingeniería de software. Resume investigaciones clave sobre el tema y concluye que el software libre ofrece oportunidades para estudiar más a fondo los procesos de desarrollo de software.
1. Ingeniería del Software Libre (ISL)
Ingeniería del Software para Tecnologías Libres
APONTE, Marcel (marcelaponte@gmail.com)
Universidad Nacional Experimental de Guayana (UNEG)
Septiembre 2015
RESUMEN
En este artículo se presenta los resultados del estado del arte de la Ingeniería del Software Libre (ISL),
realizando una investigación de diversos autores que plantean temas como lo inexplorado de la Ingeniería del
Software Libre, así como la incorporación de herramientas para llevar a cabo dicha Ingeniería; de igual
manera, poder llevar a cabo la Ingeniería del Software Libre en entornos basados en Software Libre. Toda
esta investigación se realiza con el fin de poder tener una “situación actual” de lo que se realiza y se ha
realizado en materia de Ingeniería del Software Libre, y poder el autor determinar sus futuras investigaciones
que arrojen mejoras en la metodología e implantación de modelos basados en la Ingeniería del Software
Libre.
Palabras claves: software libre, ingeniería del software, ingeniería del software libre.
ABSTRACT
In this article the results of the state of art of Free Software Engineering (ISL) occurs, an investigation of
various authors suggest as unexplored issues of free software engineering, as well as the incorporation of tools
to perform that engineering; Similarly, you can perform the Free Software Engineering based on Free
Software environments. All this research is done in order to have a "current situation" of what is done and has
been done on free software engineering, and the author can determine their future research to gain
improvements in methodology and implementation Engineering models based on Free Software.
Keywords: free software, engineering software, free software engineering.
1. INTRODUCCIÓN
La Ingeniería del Software Libre permite
observar de manera diferente la forma de
desarrollar software, en donde prevalece trazar las
pautas para que este trabajo colectivo se realice de
manera eficiente.
En el presente artículo se describirán las
investigaciones que se han realizado sobre el
tema, con el fin de mostrar el estado actual de la
Ingeniería del Software Libre, se presentan
conclusiones sobre el tema y se plantea el trabajo
futuro de esta investigación.
2. INGENIERÍA DEL SOFTWARE
Antes de poder revisar definiciones de la
Ingeniería del Software, es importante tener los
conceptos de las palabras que la conforman; por lo
cual tenemos que Software, “es el conjunto de los
programas de cómputo, procedimientos, reglas,
documentación y datos asociados, que forman
parte de las operaciones de un sistema de
computación.” (IEEE, 1993). En tanto Ingeniería,
“Conjunto de conocimientos y técnicas que
permiten aplicar el saber científico a la utilización
de la materia y las fuentes de energía, mediante
invenciones o construcciones útiles para el
hombre” (Real Academia Española)
El término Ingeniería del Software ha
sido utilizado en los siguientes contextos:
- como término informal para el rango de
actividades que antes se conocían como
programación y análisis de sistemas.
- como término para los aspectos prácticos de
la programación de computadoras, que eran
opuestos a los aspectos teóricos, conocidos
como ciencias de la computación.
- como término que define la aplicación de
aproximaciones sistemáticas, disciplinadas y
cuantificables del desarrollo, operación y
mantenimiento de software.
A su vez, diversos autores indican que la
ingeniería del Software:
“Es el establecimiento y uso de los
principios sólidos de la ingeniería para obtener
económicamente un software confiable, y que
funcione de modo eficiente en máquinas reales.”
(Bauer, 1972).
“Es el estudio de los principios y
metodologías para el desarrollo y mantenimiento
de sistemas de software.” (Zelkovitz, 1978).
2. Construcción de un Mapa Conceptual de la Ingeniería del Software 2
Aponte, M. Septiembre 2015
“Es la aplicación de un enfoque
sistemático (ordenado), disciplinado y
cuantificable al desarrollo, operación y
mantenimiento de software, esto es, la aplicación
de la ingeniería en el área de software” (IEEE,
1993).
“Es la aplicación práctica del
conocimiento científico al diseño y construcción
de programas de computadora y a la
documentación asociada requerida para
desarrollar, operar y mantenerlos. Se conoce
también como desarrollo de software o
producción de software.” (Bohem, 1976).
“Es la aplicación inteligente de principios
probados, técnicas, lenguajes y herramientas para
la creación y mantenimiento, dentro de un coste
razonable, de software que satisfaga las
necesidades de los usuarios.” (Davis, 1969).
3. SOFTWARE LIBRE
Un programa es software libre si los
usuarios tienen las cuatro libertades esenciales,
según Free Software Foundation (FSF):
- La libertad de ejecutar el programa como se
desea, con cualquier propósito (libertad 0).
- La libertad de estudiar cómo funciona el
programa, y cambiarlo para que haga lo que
usted quiera (libertad 1). El acceso al código
fuente es una condición necesaria para ello.
- La libertad de redistribuir copias para ayudar
a su prójimo (libertad 2).
- La libertad de distribuir copias de sus
versiones modificadas a terceros (libertad 3).
Esto le permite ofrecer a toda la comunidad la
oportunidad de beneficiarse de las
modificaciones. El acceso al código fuente es
una condición necesaria para ello.
4. INGENIERÍA DEL SOFTWARE LIBRE
Todos tenemos como referencia de
Modelo de Desarrollo del Software Libre, que es
atípico y no convencional, se basa en un entorno
distribuido y colaborativo donde todos pueden
colaborar programando partes del software o en
diferentes tareas específicas (traducción, diseño de
interfaz, etc.), no busca crear en software en poco
tiempo, a menores costos y de una mayor calidad,
surgió de manera espontánea y natural.
La evolución del modelo del Software
Libre se presenta a través de las siguientes figuras
que se muestran a continuación:
Figura 1. Evolución del Modelo de Desarrollo de Software
Libre
A continuación se presentan los
resúmenes de investigaciones realizadas sobre el
tema, con el fin de evidenciar el estado actual de
la Ingeniería del Software Libre.
La Catedral y el Bazar, escrito por Eric
Raymond (2000), es la referencia inicial de
revisión del Modelo de Desarrollo de Software
Libre, en donde el autor analiza un proyecto de
software de dominio público desarrollado con
éxito, que se realizó como una prueba deliberada
de algunas teorías sorprendentes sobre ingeniería
del software sugeridas por la historia de Linux.
Presentando estas teorías en términos de dos
estilos de desarrollo completamente distintos, el
modelo “catedral”, aplicable a la mayor parte de
3. Construcción de un Mapa Conceptual de la Ingeniería del Software 3
Aponte, M. Septiembre 2015
los desarrollos realizados en el mundo del
software comercial, frente al modelo “bazar”, más
propio del mundo Linux. Muestra que estos
modelos se derivan de puntos de partida opuestos
sobre la naturaleza del proceso de depuración del
software, manteniendo a partir de la experiencia
Linux la hipótesis de que “Dado un número
suficiente de ojos, todos los errores son
irrelevantes”, sugiriendo analogías productivas
con otros sistemas auto-correctores integrados por
agentes autónomos, y concluye realizando alguna
exploración de las consecuencias de este punto de
vista sobre el futuro del software.
Gregorio Robles Martínez (2002)
presentó un artículo denominado Ingeniería del
Software Libre. Una visión alternativa a la
ingeniería del software tradicional; en donde nos
presenta que la Ingeniería del Software, se ha ido
consolidando como una rama fundamental de la
informática, al buscar métodos de desarrollo y
técnicas que permitan producir software de gran
calidad con recursos limitados. Y para esa época,
muestra que a pesar de conseguir notables éxitos,
la ingeniería del software sucumbe a lo que se
llamó la “crisis del software”, demostrado a través
de la imposibilidad de cuantificar con exactitud
los plazos, costes, recursos humanos y técnicas
que lleven a un desarrollo exitoso del software, tal
y como otras ramas de la ingeniería en otros
campos sin han sido capaces de hacer. El referido
autor argumenta que la Ingeniería del Software se
encuentra estancada y falta de ideas.
Por ello, destaca lo que puede aportar el
Software Libre a la Ingeniería del Software, con la
implantación y masificación de Internet junto con
las características de las licencias que “invitan” a
todo el mundo a formar parte del equipo de
desarrollo, propician que no solo se cuente con el
código fuente (un gran avance para su estudio en
contraposición del software propietario), sino
tomar medidas de los archivos de las listas de
correo donde se plasma la comunicación del
proyecto, los repositorios de versiones en donde
se puede evidenciar la evolución del proyecto, etc.
Por lo tanto, el software libre ofrece la
oportunidad de más a fondo el proceso de
concepción del software, aportando nuevas
evidencias y experiencias. La apertura tanto del
código como de la información asociada al
proceso de desarrollo que ofrece el software libre
es clave para que pueda ser analizado, estudiado y
discutido de manera contrastable y abierta.
Mauro Callejas Cuervo (2006) publica un
artículo referente a La Ingeniería de Software
Libre y sus Herramientas Aplicadas a Proyectos
Informáticos. En donde muestra un nuevo
enfoque, que permite observar de manera
diferente la forma de desarrollar software, y por
ende, traza algunas pautas para que este trabajo
de carácter colectivo se realice de manera
eficiente. Así se pretende mostrar un juego
lingüístico, como el concepto de kernel o núcleo
de trabajo, sitio web para manejar el proyecto (la
aplicación) y algunos otros términos. Por lo tanto,
el autor indicado resalta la forma de trabajo
propuesta para la Ingeniería del Software Libre, y
lo plasma a través de una guía práctica y
secuencial para adentrarse en conceptos básicos de
las herramientas utilizadas en la Ingeniería del
Software Libre.
En primera instancia plantea seguir
ciertas normas de ingeniería, luego se plantean
algunas funciones de los grupos que hacen parte
del equipo de trabajo, así como muestra algunos
casos prácticos en los cuales se han utilizado
técnicas y métodos de Ingeniería de Software
Libre.
José González-Barahona y Gregorio
Robles (2003) a través del artículo Ingeniería del
Software Libre: un área por explorar nos muestra
que aunque el Software Libre ha sido desarrollado
por décadas, solamente en los últimos años se ha
empezado a prestar atención a sus modelos y
procesos de desarrollo desde el punto de vista de
la Ingeniería del Software. Del mismo modo que
no existe un modelo único de desarrollo de
software propietario, tampoco hay uno solo en el
mundo del software libre.
El autor resalta que el software libre, no
es nuevo competidor, bajo las mismas reglas, sino
diferente al poder producir software más rápido,
más barato y de mejor calidad. El software libre
se diferencia del software “tradicional” en
aspectos más fundamentales, empezando por
razones filosóficas y motivacionales, continuando
con las nuevas reglas económicas y de mercado.
Callejas (2006) nos indica en el nuevo
tópico de la Ingeniería del Software, el término
kernel, en vez de grupo. La visión del kernel está
dada en que es un grupo el que lo conforma, pero
puede tener aportaciones valiosas a su alrededor, y
allí es donde se evidencia el trabajo colaborativo o
en comunidad, haciendo que cualquier aporte
hecho fuera del grupo pueda ser compilado en su
interior, con el fin de enriquecer el producto final.
El ciclo de vida para el desarrollo del
software puede tomar algunos aspectos
relacionados con metodologías ágiles o
metodologías tradicionales, según la naturaleza
del proyecto, pero haciendo un especial énfasis en
que el desarrollo debe ser iterativo e incremental,
tal y como se observa en la Figura 2.
4. Construcción de un Mapa Conceptual de la Ingeniería del Software 4
Aponte, M. Septiembre 2015
Figura 2. Esquema de Trabajo en Ingeniería del Software Libre
(Callejas, 2006).
De igual manera, se debe crear una
herramienta (sitio Web) de visualización y
manipulación del proyecto se deben seguir ciertos
principios de usabilidad. En la Web se plasmaran
los avances, tareas pendientes, tareas asignadas,
personas responsables y el cronograma de
actividades fijado para el desarrollo total del
proyecto; también debe mostrar la constitución de
los diferentes grupos de trabajo colaborativo
(kernel), con su líder correspondiente, quien será
el responsable de la publicación de los diferentes
hallazgos y productos resultantes del desarrollo de
las actividades.
La Ingeniería del Software en Entornos
de SL escrito David Aycart Pérez, Marc Gibert
Ginestà, Martín Hernández Matías y Jordi Mas
Hernández (2007) nos muestra las bases para
conocer los conceptos principales involucrados en
la ingeniería del software en general, y su
aplicación al software libre en particular (gestión
de proyectos, ciclo de vida del software, análisis
de requisitos, estimación de costos, diseño,
documentación, pruebas y calidad, seguridad, y
metodologías). Se muestra una visión de los
controles de calidad y de pruebas en el caso
particular, tanto de prácticas como de
aplicaciones, del software libre, resaltando los
principales principios, técnicas y aplicaciones que
se utilizan para garantizar la calidad de los
productos libres.
El sistema operativo GNU/Linux ha
supuesto una auténtica revolución en el mundo del
software libre. Como consecuencia de su
expansión, el desarrollo de software en entornos
GNU se ha multiplicado por diez en el último año
(2004). Gran cantidad de compañías que
desarrollaban sus productos en entornos
propietarios migran estos a plataformas libres, lo
que demanda un gran número de programadores
en un entorno de desarrollo muy distinto al
habitual en el software propietario. De igual
manera, incluye documentación de CVS
(concurrent versions system), el cual es el
programa más utilizado en el mundo del software
libre para el control de versiones del software.
Basado en el modelo cliente-servidor, existen
versiones del programa para multitud de
plataformas. Además, de la manera de distribuir el
software en plataformas GNU/Linux y los
aspectos relacionados con los sistemas de
documentación más aceptados dentro del mundo
del software libre y de fuente abierta.
En la Propuesta de incorporación de la
Ingeniería de Software Libre y de Código Abierto
al currículo de Ingeniería en Sistemas de
Información y carreras afines, presentada por
Juan B. Cabral; Ricardo Medel; Nestor Navarro;
Mariano Reingart (2014), afirman que desde sus
inicios el software libre/de código abierto ha
generado intensos debates sobre la propiedad
intelectual, las libertades del usuario y las formas
de creación y distribución de software. Sin
embargo, en los últimos años el debate ha
disminuido notablemente ya que ha demostrado
ser viable técnica y económicamente, como lo
demuestra el hecho de que algunas empresas y
sistemas más utilizados en la actualidad son o
están basados en software libre.
En la propuesta presentada justifica la
importancia de incluir la enseñanza de
metodologías de desarrollo de software libre, con
el fin de enseñar las particularidades filosóficas,
económicas, legales y técnicas de este cambio de
paradigma de la Ingeniería del Software Libre.
5. CONCLUSIONES Y PRÓXIMOS PASOS
En este artículo se puede evidenciar que
la Ingeniería del Software Libre (ISL) se
encuentra como un campo en gran parte
inexplorado. En sus primeros pasos se hicieron
escritos ensayísticos en el que se propone un
modelo de desarrollo más eficiente, no sin una
cierta falla de rigor científico, pero se ha hecho un
progreso gradual en el estudio sistemático del
software libre desde el punto de vista de
ingeniería.
La ingeniería del software libre se
encuentra en una etapa de infancia, en donde
existen varios aspectos muy importantes que
todavía necesitan ser estudiados cuidadosamente y
examinados en gran profundidad con el fin de
5. Construcción de un Mapa Conceptual de la Ingeniería del Software 5
Aponte, M. Septiembre 2015
llegar a un modelo que explica, aunque solo en
parte, la forma de crear software libre.
Como próximo paso de este autor, es la
elaboración de una propuesta de metodología
basada en la medida de lo posible en el análisis
automatizado y el uso de conocimientos
adquiridos para crear modelos que nos permitan
entender y definir el proceso de desarrollo de
software libre, al tiempo de facilitar la decisión a
tomar basada en la experiencia adquirida. Todo
esto apoyado sobre herramientas basadas en
Software Libre.
6. REFERENCIAS
Cabral, J. & Medel, R. & Navarro, N. & Reingart,
M. (2014). Propuesta de incorporación de
la Ingeniería de Software Libre y de
Código Abierto al currículo de Ingeniería
en Sistemas de Información y carreras
afines. Simposio Argentino de Tecnología
y Sociedad.
Callejas, M. (2006). La Ingeniería de Software
Libre y sus Herramientas Aplicadas a
Proyectos Informáticos. Facultad de
Ingeniería, Universidad Pedagógica y
Tecnológica de Colombia.
Callejas, M. (2006). Proyectos Informáticos
basados en Ingeniería de Software Libre.
Congreso Internacional de Ingeniería de
Proyectos.
Gonzalez-Barahoma, J. & Robles, G. (2003). Free
Software Engineering: A Field to Explore.
Novática.
Pérez, D. & Gibert, M. & Hernández, M. (2007).
Ingeniería del Software en entornos de SL.
Fundació per a la Universitat Oberta de
Catalunya.
Quiñones, E. La Ingeniería del Software en el
modelo de desarrollo del Software Libre.
EQSoft.
Raymond, E. (2000) The Cathedral and the
Bazaar.
Robles, G. (2002). Ingeniería del Software Libre.
Una visión alternativa a la ingeniería del
software tradicional. Universidad Rey Juan
Carlos.