1. UNIVERSIDAD NACIONAL DE CHIMBORAZO
TRABAJO DE INFORMATICA
HERRAMIENTAS DE SOFWARE LIBRE PARA INGENIERIA
JONATHAN ARROBO
ING. INDUSTRIAL
2. HERRAMIENTAS DE SOFWARE LIBRE PARA INGENIERIA
Este documento 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, que se describen más adelante.
La distribución del escrito está dada de forma tal que el
lector tiene una guía práctica y secuencial para adentrarse
en conceptos básicos de las herramientas utilizadas en la
ISL. En primera instancia se presentan aspectos generales
del trabajo enfocado bajo ciertas normas de ingeniería
3. que se deben seguir; luego se plantean algunas funciones
de los grupos que hacen parte del equipo de trabajo;
posteriormente se comentan algunos casos prácticos en
los cuales se han utilizados técnicas y métodos de
ingeniería de software libre. Y finalmente se dan algunas
conclusiones y se plantea el trabajo futuro d
e
investigación.
Algunos de los aportes aquí presentados son parte de la
experiencia docente, en el desarrollo de asignaturas
relacionadas con ingeniería de software y de proyectos de
software libre dirigidos en trabajos de pregrado en
ingeniería de sistemas [Callejas et al, 2005], así como en
la presentación de ponencias en eventos internacionales
relacionados [Callejas et al, 2005], [Callejas, 2005].
La Ingeniería de Software Libre (ISL) 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 [Witten et al, 1996],
[Yourdon, 1990], [Kendall & Kendall, 1998], un enfoque
orientado por objetos [Meyer, 1998] 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
UML[Jacobson et al, 1999] o el modelado estructurado,
ni ofrece recomendaciones que permitan evaluar el nivel
de calidad de una organización, como lo promueve The
Capability Maturity Model, CMM [Paulk et al, 1993].
4. 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 que aquí se mencionan. 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.
que participan en actividades relacionadas con el análisis,
diseño, implementación e implantación de aplicaciones
informáticas, haciendo uso de herramientas de software
libre, y quienes de manera voluntaria apoyan cualquier
labor que tenga alguno de los kerneles.
Con la ISL 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.
Un aspecto por tener en cuenta en el nuevo tópico de la
ingeniería de software libre es el término kernel. ¿Por
qué kernel y no simplemente grupo?
La visión de 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. Lo
anterior puede llegar a ser comparado con un Sistema
Operativo (SO), donde el kernel administra y controla
tanto software como hardware de manera rústica (modo
5. consola), pero se puede y se debe llegar a crear
herramientas que permitan al usuario una mayor
interacción con el computador. Por ejemplo, programar
un escritorio para Linux (KDE) hace que la interfaz sea
más amigable al usuario y además ofrece un aporte
significativo para mejorar la aplicación final.
El ciclo de vida para el desarrollo del software puede
tomar algunos aspectos relacionados con metodologías
ágiles o metodologías tradicionales [Pressman, 2002],
según la naturaleza del proyecto, pero haciendo un
especial énfasis en que el desarrollo debe ser iterativo e
incremental [Larman, 2002], tal y como se observa en la
figura 1, en donde se presenta un proceso cíclico, que
muestra como el kernel de planeación orienta a los
demás kerneles en un perfecto engranaje y estos a su vez
desarrollan sus propias actividades, dando su inicio a
cada una de las iteraciones en el análisis y llegando a la
implantación de cada uno de los módulos. Al finalizar
cada iteración pasa nuevamente al análisis de otro de los
módulos. Se observa además como la comunidad libre se
encuentra fuera de la integración de los kerneles, ya que
ésta es la que da sus aportes y punto de vista al grupo
general de trabajo (aporta a cada uno de sus kerneles
cuando sea el caso).
También el término ‘comunidad libre’ juega un papel
importante en este tópico; se refiere al grupo de personas
Algunos de estos conceptos fueron presentados en el “IEEE
3er Congreso Internacional en Innovación y Desarrollo
Tecnológico” realizado en el la ciudad de Cuernavaca,
6. Morelos, México, en Septiembre de 2005, por Mauro Callejas
Cuervo.
Esta comunidad debe conocer las políticas y los
lineamientos elaborados por el kernel planeador para su
participación en el proceso de desarrollo de la aplicación.
Cuando se generan aplicaciones de software libre es
importante tener en cuenta las herramientas que se
utilizarán para la divulgación y manipulación del
desarrollo del proyecto (sitio web), así como las partes
que componen el equipo de trabajo, sus funciones
específicas y algunos otros aspectos que tienen que ver
con la ingeniería de software tradicional. En este aparte
se hace una breve descripción de cada una de ellas.
Para cualquier desarrollador de software, la elección de las herramientas
adecuadas es un tema muy delicado e importante, pues para lograr un
desarrollo de calidad requerimos de herramientas de gran calidad, eficiencia,
facilidad de uso y poder.
Afortunadamente el desarrollo de programas y sistemas de información no se
limita a la utilización de lenguajes de programación de uso general, sino que
existen otras herramientas y aplicaciones de software necesarias para esto,
que nos ayudan desde la concepción, análisis y diseño de un software hasta
la implantación del mismo.
Para el desarrollo del sistema de información y teniendo en cuenta que la
Compañía no iba a invertir grandes cantidades de dinero en el proyecto, fue
necesario indagar las diferentes herramientas de software libre que
existen en el mercado, con el fin identificar cuales eran las mas indicadas
7. para utilizar.
Parte de los resultados de investigación hallados se inclinaron hacia el
sistema operativo Linux (RedHat 9.0), para la codificación Kylix 3 Open
Edition, base de datos FirebirdSQL v1.5 y administrador de la base de
datos IBManager v3.7. Los cuales poseen las siguientes potencialidades:
Linux
Linux es una implementación del sistema operativo UNIX (uno más de entre
los numerosos clónicos del histórico Unix), pero con la originalidad de ser
gratuito y a la vez muy potente, que sale muy bien parado al compararlo con
las versiones comerciales para sistemas de mayor envergadura y por tanto
teóricamente superiores. Comenzó como proyecto personal del -entonces
estudiante- Linus Torvalds, quien tomó como punto de partida otro viejo
conocido, el Minix de Andy. S. Tanenbaum (profesor de sistemas operativos
que creó su propio sistema operativo Unix en PCs XT para usarlo en su
docencia). Actualmente Linus lo sigue desarrollando, pero a estas alturas el principal autor es la red
Internet, desde donde una gigantesca familia de
programadores y usuarios aportan diariamente su tiempo aumentando sus
prestaciones y dando información y soporte técnico mútuo.
FirebirdSQL
La creación de un buen software es producto de un buen análisis y diseño,
un programador experimentado y el uso de herramientas confiables y
eficientes. Por eso la elección de una base de datos es un punto crucial para
crear buenos desarrollos de software administrativo.
Para cualquier desarrollador de software, la elección de las herramientas
adecuadas es un tema muy delicado e importante, pues para lograr un
desarrollo de calidad se requiere de herramientas de gran calidad, eficiencia,
facilidad de uso y poder.
8. Afortunadamente el desarrollo de programas y sistemas de información no se
limita al uso de lenguajes de programación de uso general, sino que existen
otras herramientas y aplicaciones de software necesarias para esto, que
ayudan desde la concepción, análisis y diseño de un software hasta la
implantación del mismo.
Firebird es un desarrollo derivado de InterBase 6.0 (Fig. 7) que está apoyado
por un grupo de desarrolladores de todo el mundo para garantizar la
continuidad de la base de datos bajo el esquema de código abierto y sin
pago de licencias. Debido a que es derivado del código de InterBase 6.0,
tiene las mismas características que IB6, aunque de ahora en adelante irán
teniendo diferencias debido a que son dos desarrollos independientes.
IBManager
EMS InterBase & Firebird Manager es una herramienta poderosa y efectiva
para la administración de las bases de datos InterBase y Firebird. Permite
editar todos los objetos de la base de datos, buscar en los metadatos, extraer
los metadatos, imprimir metadatos, importar datos y exportar datos hasta en
9. 12 formatos de archivos. IB Manager también incluye un depurador de
procedimientos almacenados, editor SQL, constructor visual de consultas
(Visual Query Builder), administrador de permisos de usuarios (Grant
Manager), administrador de usuarios, editor/visor de campos BLOB
(binarios), procesador de scripts SQL, soporte a adiciones de otras
compañías (plug-ins) y muchas más características.
IBManager mantiene un registo de las bases de datos que utilizamos,
mediante el DB Explorer. Para agregar una base de datos existente en el DB
Explorer, ejecutamos la instrucción Register Database, la cual abre un
cuadro de diálogo donde se ponen todas las características de la base de
datos, como el nombre del servidor -en caso de que sea un servidor remoto-,
el archivo de la base de datos, la clave del usuario, su contraseña y el rol que
está usando el usuario.
Kylix
Se trata del primer ambiente nativo de Desarrollo Rápido de Aplicaciones
(RAD). Combina un ambiente visual intuitivo, optimizado mediante un
compilador nativo, un depurador interactivo y un conjunto de componentes
que permite a los analistas y programadores de software liberar aplicaciones
basadas en Linux para ambientes de escritorio, Web y bases de datos.
Todo esto desemboca en que cualquier desarrollador de Borland Delphi o
Microsoft Visual Basic puede ser capaz, mediante Kylix, de trasladar sus
habilidades, conocimientos y aplicaciones a la plataforma Linux.
Contando con tiempos rápidos de compilación, 4.000.000 líneas por minuto,
las aplicaciones correrán inmediatamente con la misma velocidad de las
aplicaciones C/C++.
La técnica drag & drop (arrastrar y soltar) está completamente soportada, lo
10. cual facilita la tarea a los programadores.
Kylix está disponible en tres versiones: Server Developer, para programación
en Apache Web; Desktop Developer, para desarrolladores de aplicaciones; y
Open Edition, para crear programas con código abierto.
Debido a que Kylix y Delphi comparten una librería de componentes común,
el código fuente desarrollado con Kylix puede ser recompilado en Delphi (y
viceversa), permitiendo unas más eficientes implementaciones de plataforma
cruzada para compañías comprometidas con desarrollos en Linux y
Windows.