Twitter
Quas molestias excepturi

Quas molestias excepturi

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum...

Quas molestias excepturi
Impedit quo minus id

Impedit quo minus id

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum...

Impedit quo minus id
Voluptates repudiandae kon

Voluptates repudiandae kon

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum...

Voluptates repudiandae kon
Mauris euismod rhoncus tortor

Mauris euismod rhoncus tortor

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum...

Mauris euismod rhoncus tortor

Search

Followers

About Me

Mi foto
Samuel J. Silva S.
Ver mi perfil completo

Footer Widget 1


Tarjeta de Presentacion

Tarjeta de Presentacion

Social Icons

Con tecnología de Blogger.

Social Icons

Blog description

Blogger templates

jueves, 11 de septiembre de 2014

Dadas las desventajas de software propietario, especialmente en lo aue respecta a costo, empresas y usuarios en algún momento han llegado a preguntase "¿Deberia migrar mis aplicaciones a software libre?", y aunque existen múltiples razones para hacerlo, la respuesta final dependerá de muchos factores y de la valoración o importancia que tenga cada una de ellas para nosotros.

Por lo general, conviene analizar la situación de la que partimos, es decir, el estado actual de nuestros sistemas. queremos los beneficios del software libre pero llegar a ellos lo vemos muy difícil, por todo lo que ya está implantado; de alguna forma estamos asumiendo mantener una situación ineficiente, siendo conscientes de ello, por no atrevernos o saber cómo cambiarla.

Y es que cambiar los sistemas de escritorio de una organización, con todas las interrelaciones que hay entre las distintas aplicaciones y servicios, no es una tarea trivial que se pueda abordar a modo de "quick fix", como a veces pretende hacerse. Cada septiembre nos llega alguna petición del tipo "Vamos a cambiar de MS Office a OpenOffice antes de final de año. Queremos que nos ayudeis". En estos casos, al preguntar por los motivos del cambio, se repite siempre, con alguna variación, la misma razón: "Hemos recibido una carta amenazante de Microsoft. Estamos hartos de su prepotencia y abusos de precio". Nuestra siguiente pregunta siempre también es la misma: "¿Cuánto hace que estais preparando la migración?". Nunca ha habido preparación previa, este tipo de migración precipitada es siempre una migración forzada por la necesidad de esquivar la auditoría de los abogados de Microsoft. Nuestro consejo en este caso simpre capear la auditoría como se pueda, negociar lo mejor posible el pago de algunas licencias y preparar juntos la migración durante el siguiente año.

La migración a software libre debe ser resultado de una estrategia de sistemas a largo plazo. Si se va preparando la migración como un objetivo estratégico en todas las decisiones que se vayan tomando, con prevision de futuro y algo de sentido común, incluso los entornos más complejos puede migrarse completamente en 2 ó 3 años. Pero nunca en 2 ó 3 meses.

Migrar todo un entorno de usuario a software libre exige una planificación y estrategia que se debe ir desarrollado a lo largo de meses e incluso años. Preparar una migración completa en una única intervención no es realista y provocará, en la mayoría de los casos, un pequeño desastre, con la necesidad de vuelta atrás y la reticencia de los usuarios y la dirección a este tipo de proyecto en el futuro. Ello es especialmente doloroso, porque una mala ejecución impide que la empresa u organización se beneficie del software libre durante mucho tiempo a causa de las "cicatrices " dejadas en los usuarios y dirección. Por ello es muy importante contar con un buen socio tecnológico con consultores de confianza que acompañen a la empresa más allá de los proyectos concretos.

Introducir las nuevas aplicaciones de forma paulatina

Empezar la migración a software libre por el sistema operativo es en la mayoría de casos una mala idea. Debemos aprovechar que casi todas las aplicaciones de Open Source son multiplataforma para empezar el cambio por ellas. Así conseguiremos que el usuario no sufra un cambio radical de todo su entorno de golpe, sino en sólo una o dos aplicaciones cada vez. El objetivo es ir cambiando las aplicaciones propietarias disponibles para Windows que estemos utilizando por sus equivalentes de Open Source multiplataforma. Por ejemplo, podemos cambiar Internet Explorer por Firefox u otro navegador multiplataforma con relativa facilidad, y resolver los problemas que puedan surgir con este cambio sin necesidad de estructurar un gran proyecto. Una vez tengamos estabilizada nuestra infraestructura con Firefox podremos iniciar el cambio a OpenOffice.org o remplazar Outlook por otro cliente de correo, por ejemplo.

Tengamos en cuenta que cada cambio es una pequeña migración, con sus pequeños problemas, requerimientos al entorno y modificaciones en el interface del usuario. Este enfoque permite que la reacción exigida al usuario sea siempre limitada y que los planes de formación de los usuarios y la asimilación del nuevo entorno por éstos sean más sencillos. Cuando todas las aplicaciones de los usuarios sean multiplataforma podremos cambiar el sistema operativo de Windows a Linux de forma extremadamente sencilla, prácticamente sin incidencia en el usuario.

Esta aproximación nos permite, además, concentrarnos en esta última fase en buscar soluciones para las eventuales aplicaciones que quizás debamos mantener obligatoriamente en Windows en modo "legacy", con plataformas de simulación tipo Wine o CrossOver y creando un entorno virtual para la ejecución remota de estas aplicaciones con 2X o XenApp.


No empezar por lo más difícil

Lo más razonable es empezar la implantación del software libre en aquellas aplicaciones que tengan menos exigencias en el apartado de gestión del cambio, es decir, las que modifiquen menos el entorno del usuario. Eso implica que empezaremos por implantar software libre posiblemente en los servidores, por ejemplo en los servidores web, servidores de correo, servidores de aplicaciones e infraestructuras de gestión o servicios de comunicaciones. La mayoría de empresas ya han dado algún paso en este sentido.

Esta aproximación nos permite adquirir experiencia en las peculiaridades del softwre libre y generar confianza en los usuarios, dirección de la empresa y en nuestro propio equipo. En los siguientes pasos iremos migrando otras infraestructuras que tengan ya relación directa con el usuario y que se estén ejecutando en los equipos de escritorio, como el cliente de correo o el paquete ofimático.

En la migración de cada aplicativo también podríamos aplicar el mismo concepto de no empezar por lo más difícil. En general a medida que se va avanzando en la migración vamos adquiriendo experiencia y los usuarios aceptan mejor el cambio, por lo que lo que en un principio parecía difícil poco a poco se va convirtiendo en más fácil.

Visión estratégica: estándares abiertos y libres

Algo muy importante, una vez hemos decidido que queremos al menos algunos de nuestros sistemas en software libre, es no añadir dificultades a la migración con acciones equivocadas. Tenemos que evitar que eso sucede sobre todo con los nuevos desarrollos y nuevas infraestructuras que, dentro del ciclo de vida de nuestros sistemas, vamos a ir evolucionando o implantando. Un ejemplo típico es el siguiente: hemos decidido que en el próximo año queremos migrar a OpenOffice, pero a la vez ponemos en marcha una nueva aplicación de Business Intelligence que requiere Excel para sus reportes. Parece una perogrullada, pero no siempre algo tan simple se cumple, porque en la realidad estas dependencias no siempre son tan evidentes.

Una buena práctica es exigir que cualquier nuevo sistema o aplicación que vayamos a implantar trabaje con estándares abiertos y libres, y que además no exija para su funcionamiento la existencia de software propietario en nuestros equipos. Una forma práctica de conseguir eso es poner como especificación (y validarlo posteriormente) que cualquier nueva aplicación o desarrollo pueda funcionar sobre un equipo con Linux, aunque nuestra implantación en este momento no lo requiera. Con esta simple verificación nos aseguramos que no introducimos nuevos lock-in de los que luego arrepentirnos en nuestros sistemas. Análogamente deberemos pedir a los proveedores y nuestros desarrolladores internos que cualquier nueva aplicación web esté basada en estándares abiertos y pueda funcionar en los navegadores libres. En esta fase es importante no olvidar que un requisito estratégico a demandar para cualquier nueva aplicación o servicio es la interoperatividad con estándares abiertos y libres. Un protocolo abierto, estándar y libre se define como uno libre de patentes, reconocido como estándar por una organización independiente de prestigio y con al menos una implantación con software libre.

Finalmente insistir en que las nuevas aplicaciones se desarrollen de manera que sean multiplatafoma, tanto por el lenguaje en que se escriban como por las bibliotecas que utilicen para la construcción de interfaces. No utilizar nunca para nuevas aplicaciones lenguajes y APIs de arquitecturas específicas ni integrarlas de ningún modo de forma monolítica con otras aplicaciones propietarias.

Peculiaridades de la migración a OpenOffice

Un caso particular de la migración de aplicaciones de escritorio es MS Offce. La migración de las aplicaciones ofimáticas puede resultar muy sencilla o un poco más complicada en función de lo que los usuarios estén utilizando y hayan desarrollado con estas herramientas. En general es importante desincentivar el uso de macros en el lenguaje propietario de Microsoft, buscando otro modo de automatizar los procesos cuando sea necesario.

Otro aspecto deseable es evitar el desarrollo de nuevas aplicaciones con Visual Basic y MS Access, y limitar la evolución de las existentes a lo imprescindible para que no aumente su complejidad. El proceso de migración a OpenOffice es aprovechado por muchas empresas para inventariar las aplicaciones MS Access dispersas por la organización, verificar si cumplen los requisitos de seguridad exigibles por la LOPD y reorganizar totalmente esa parte de los sistemas.

Educar a los usuarios a utilizar el formato PDF para los archivos que sólo requieran acceso o ser compartidos en modo lectura facilitará también el proceso de migración de MS Office a OpenOffice posterior. Formar a los usuarios en buenas practicas de elaboración de documentos, aunque se almacenen todavía en formatos propietarios, hará que su conversión a formatos estándares y abiertos (ODF) posteriormente sea mucho más simple, prácticamente automática.

En cualquier caso, antes de empezar esta parte de la migración es importante realizar un estudio de viabilidad. Sin él la migración de las aplicaciones ofimáticas puede depararnos alguna sorpresa desagradable.

lunes, 8 de septiembre de 2014

¿Qué es una migración de software?

Es el traslado de una aplicación de un ordenador a otro en condiciones de compatibilidad. Migrar es también elevar una versión de un producto software a otra de más alto nivel, o bien el movimiento de una arquitectura a otra, por ejemplo, de un sistema centralizado a otro con una estructura basada en el modelo cliente/servidor.

Aspectos a considerar en un proceso de migración

  • La migración de Software Privativo a Software Libre, presenta algunas característica especiales. Si la migración de software se hace de forma desigual, es muy probable que los usuarios rechacen el cambio o que incluso se opongan a el. 
  • Sortear una serie de inconvenientes para migrar con éxito. Para realizar este tipo de migración, ha de considerar siempre realizarlo en dos pasos, migrando inicialmente los servicios y, posteriormente, los usuarios.
  • Siempre que se realice una migración de algún servidor, es importante que el técnico o administrador encargado de dicho servidor sea participativo en la migración. De esta manera podrá aprender durante la migración las tareas básicas de administración del nuevo sistema. 
  • Realizar un claro diagnóstico de la situación de partida o escenario. 
  • Definir con la misma precisión la situación que esperamos encontrar al terminar la migración. 
  • Justificar el por qué de la migración, realizar un análisis de costos de la migración y proyectar los ahorros factibles, con el correr del tiempo, en pago de licencias.
  • Describir el plan de migración. 
  • Convertir los archivos a un formato abierto o mantener equipo dentro de la red funcionando con el software específico para manejar esos archivos. 
  • Contar con un equipo técnico que pueda brindar asesoramiento a los usuarios luego de la migración, evacuar consultas y solucionar problemas que puedan surgir.

Formas de Migrar a Sofware Libre

1. Paulatinamente

  • Usar Software Libre en el sistema operativo privativo que estemos utilizando. Para comenzar sustituyendo aplicaciones de software privativo que usamos por sus contrapartidas en el ámbito del Software Libre. 
  • Pasar los formatos cerrados a formatos abiertos en forma progresiva, y sin cambiar el entorno operativo. Posibilitando el intercambio de archivos con usuarios de Software Libre bajo cualquier sistema operativo
  • La migración del sistema operativo haciéndolo en forma gradual máquina a máquina o por secciones. 
  • Terminar en un sistema basado en un cien por ciento en Software Libre.

2. En un solo paso

Sustituyendo de entrada el sistema operativo y todas las aplicaciones por Software Libre.


Ventaja

  • No se tienen que mantener dos sistemas simultáneamente. 
  • El nuevo sistema reemplaza al anterior. 
  • Es muy practico para empresas pequeñas. 
  • Es la estrategia de migración mas económica

Desventajas

  • Se dispone de poco tiempo para realizar la migración. 
  • Los errores en la migración se pagan caros, no se puede utilizar el sistema antiguo mientras se arreglan estos errores. 
  • Los empleados descubren el nuevo sistema de forma abrupta. Pueden rechazar la migración. Requiere de una formación previa de los usuarios.

Impacto en el Capital Humano

  • Es importante esté informado del tema para sentir beneficios en cierto plazo. 
  • Capacitación al personal que lo considere necesario “miedo a lo desconocido” uno de los escollos más frecuentes en el momento de encarar una migración. 
  • Abre puertas en el ámbito de su capacitación personal, dado que el Software Libre es una opción de futuro y una forma de apropiarse realmente de las nuevas tecnologías 
  • El área de informática debe estar involucrado y comprometido en el proceso, son los primeros en capacitarse debido a su formación y por ser las personas mas claves.

Como facilitar una una futura migración

  • Formatos Abiertos y Estándar garantiza que la organización pueda acceder hoy y en el futuro a los datos y la información que maneja. Facilitar una futura migración y el intercambio de información con los que ya están utilizando Software Libre.
  • Desarrollar sistemas basados en tres niveles, donde el código sea independiente de la interfaz y de los métodos de acceso a los datos.
  • Insistir en que las nuevas aplicaciones generadas sean portables, o sea, usar lenguajes portables como ANSI C, JAVA, Perl, Python, etc. Evitar lenguajes de arquitecturas específicas. 
  • Evitar la construcción de aplicaciones que requieran la presencia de otras aplicaciones privativas 
  • Insistir en que cualquier desarrollo web de la organización pueda ser visualizado en los navegadores más comúnmente usados en la web, principalmente los licenciados como libres, (por ejemplo Firefox).
  • Insistir en que los desarrollos web cumplan con los estándares de la W3C. Desarrollar los sitios web de forma tal que sean fácilmente portables a un servidor que corra sobre Software Libre. (Diferencia entre mayúsculas y minúsculas)

viernes, 5 de septiembre de 2014


En Venezuela se ha considerado estratégicamente la formulación de Políticas Públicas que promuevan la Soberanía Tecnológica del Estado Venezolano, así como, la democratización y apropiación social de las tecnologías de información. 



Es por ello, que el Gobierno Venezolano, ha asumido como prioridad para el desarrollo económico, social y político del país, así como para la seguridad y soberanía nacional y tecnológica, el uso prioritario del Software Libre como primer paso para alcanzar esos ideales, ya que la adopción del mismo conforma una de las bases para constituir un desarrollo tecnológico orientado al desarrollo social y la eficiencia productiva, gracias a la posibilidad que brinda de socializar tanto los productos como el uso de esos productos que hayan sido desarrollados bajo estos estándares propios del Software Libre.


Por las razones antes expuestas, nuestro país ha marcado una pauta importante en América Latina, al reconocer, desde la propia Constitución de la República Bolivariana de Venezuela (específicamente a través de su Artículo 110), como de interés público la ciencia, la tecnología, el conocimiento, la innovación y los servicios de información, como vías para lograr ese desarrollo económico, social y político del país, para luego, en el año 2004 y a través del Decreto N° 3.390, iniciar importantes esfuerzos orientados a asumir el uso y aplicación prioritaria del Software Libre desarrollado con Estándares Abiertos en la Administración Pública Venezolana, como instrumento para alcanzar nuestra soberanía tecnológica. Y para fortalecer cada día más nuestro orgullo como Venezolanos, debemos hacer referencia también a la distribución venezolana GNU/Linux llamada Canaima, la cual fue liberada por el Centro Nacional de Tecnologías de Información (CNTI) y que actualmente es distribuido a estudiantes de primarias para ser utilizados en sus estudios y difundir su uso desde temprana edad. 

Ventajas Software Libre en la Administración Pública

De acuerdo al CNTI, el uso del software libre en la administración publica está motivo a las siguientes ventajas:

Fomento de la industria local: Cuando se desarrolla o se utilizan productos de Software Libre se tienen que tener proveedores de preferencia cercanos o comunidades dentro de la misma Ciudad para que se de soporte a los productos o a los desarrollos dentro de las oficinas de Gobierno, por medio de los proyectos que se tienen vigentes. El gasto en Licencias va a dar totalmente a los fabricantes de productos, lo que hace que la empresa privada se posiciones económicamente, lo cual no es del todo malo, pero no necesariamente estamos ayudando a que las empresas locales puedan crecer y por supuesto ser competitivas.

Independencia de proveedor y competencia en el mercado: La realidad es que cualquier empresa del sector privado necesita tener una gran variedad en cuando a los proveedores para que la competencia haga bajas el precio de los productos o servicios requeridos. El Software Propietario no beneficia este tipo de competencia, aun cuando haya muchos intermediarios la realidad es que solo existe un fabricante final, que es el que realmente se esta llevando las ganancias. El Software Libre promueve la sana competencia entre diversos proveedores, aunado a que en la administración publica existen reglas muy claras para poder conformar un padrón de proveedores confiable, además de permitir la planificación consciente de el tipo de producto o servicio que se va a adquirir.


Flexibilidad y adaptación a las necesidades exacta: La adaptación de un Software es muy importante en cualquier administración, con el Software Libre es mucho mas fácil este tipo de practicas, dada la flexibilidad que existe en los estándares de desarrollo y en los lenguajes de programación. Si necesitamos una nueva versión con determinado cambio. Modificar un software propietario requiere muchos pasos y tiempo que puede hacer que la necesidad especifica llegue a convertirse en un problema muy grande, porque para hacer una modificación se necesita que su fabricante este de acuerdo y tiene que pasar los filtros de planeacion y alcance para que pueda autorizarse, ya que logra autorizarse el cambio se necesita invertir mas dinero para por fin comprar el nuevo cambio. Con el Software Libre libramos la espera y es cuestión de poner a trabajar al equipo de tecnologías, que por supuesto es especialista en tecnologías de Software libre. 

Adopción más fácil de estándares abierto: La naturaleza del Software Libre hace que los estándares de archivos sean abiertos, lo que hace que soluciones con la misma filosofía puedan ser desarrollados o utilizados fácilmente. En el software privado es muy difícil que los archivos credos puedan ser utilizados fuera del mismo software, por lo tanto para copiar archivos de lectura o ejecución, debemos de comprar mas licencias y así ejecutar o leer los mismos en computadoras ajenas a la original.

Escrutinio público de seguridad: Para la administración pública poder garantizar realmente que sus sistemas hacen sólo lo que está previsto que hagan, es un requisito fundamental. En algunos países que ya adoptaron este tipo de Software, esto es un requisito legal. Normalmente en este tipo de sistemas se manejan datos personales, los cuales deben de tener la garantía de protección (como datos fiscales, penales, electorales, etc.). Difícilmente en una aplicación propietaria, sin el código fuente disponible, se puede asegurar que efectivamente dicho sistema maneja los datos con la ética necesaria.

Disponibilidad del Software a largo plazo: Los datos que se mantienen en las oficinas de gobierno y los sistemas que los manejan, deben de estar disponibles durante muchas decenas de años. Es muy difícil que un software privativo este disponible pasando esos largos periodos de tiempo, este software cambia constantemente. En cambio, el Software Libre, puede desarrollarse en el momento que se necesite para poder hacer uso de los archivos en cuestión, sin necesidad de acudir a un fabricante que quizá desapareció o ya no migro a nuevas plataformas por no creerlo necesario.

Impacto más allá del uso por parte de la administración: Los sistemas promovidos por el gobierno a veces también son utilizados por muchos otros sectores de la sociedad. Es por eso que cualquier desarrollo con Software Libre y con dinero público que interesa a la misma sociedad puede distribuirse para las tareas informáticas de terceros que incluyen las mejoras utilizadas por la misma oficina de gobierno.

Por estas razones es mucho mas fácil pensar en que la administración publica se pueda ver beneficiada en respecto al uso y practicas basadas en Software Libre, una opción que puede ser una razón de bajar costos y utilización correcta de recursos públicos en tareas que beneficien a la ciudadanía. La siguiente semana hablare de las "desventajas" que se le ven a este tipo de Software, que en realidad se convierten en áreas de oportunidades para la Industria Local de IT.






jueves, 4 de septiembre de 2014


Definición

Una Comunidad de Software Libre es un grupo de personas que cooperan entre sí en distintas áreas relacionadas con el Software Libre. Estas personas pueden ser usuarios, desarrolladores, distribuidores, soportistas, traductores entre otras cosas. Las comunidades pueden abarcar todas estas áreas, o enfocarse en algunas específicas. La comunidad de software libre es a veces también llamada la "comunidad open source". La comunidad Linux es un subconjunto de la comunidad del software libre.

Sus objetivos van a variar dependiendo del área de enfoque de la comunidad, pero todas tienen en común el espíritu cooperativo, la búsqueda continúa del mejoramiento y difusión del software libre y del conocimiento, y que su principal interés es la libertad de los usuarios.

Origen de las Comunidades del Software Libre

Cuando el movimiento de software libre comenzó en 1983, la comunidad de usuarios era en su mayoría académicos y programadores . A finales de 1990, como el software libre llegó a ser más fácil de usar, y muchas empresas se convirtieron en usuarios, distribuidores y desarrolladores de software libre.

La comunicación en la comunidad del software libre se realiza a través de Internet, listas de correo, wikis y foros, y también mediante conferencias. Algunos de los sitios web que la comunidad del software libre usa son Slashdot, LWN, y Newsforge, aunque estos no son exclusivamente utilizadas por la comunidad del software libre. Las conferencias más importantes sonGUADEC, aKademy, FOSDEM, FISL, LinuxTag, y la LinuxWorld Conference and Expo.

Los valores que persiguen se basan en las libertades negadas por el modelo de software privativo. Pero también incluye valores de transparencia y publicidad al hacer el código fuente libremente accesible, y valores de cooperación. Al permitir que dicho código fuente pueda ser libremente accesible y modificable, se comparten conocimientos y se favorece el trabajo en cooperación. Esas mismas características permiten, además, la libre adaptación de las aplicaciones a las necesidades del usuario.

Necesidades de las Comunidades de Software Libre

Juan Cisneros (2013) en su trabajo La Motivación intrínseca: Motor de la comunidad del Software. Presento una analogía de la Pirámide del Maslow con las necesidades de las comunidades del software libre.

Impacto en las empresas

Con el éxito del software libre como GNU/Linux, Servidor HTTP Apache, Mozilla Firefox y OpenOffice.org, muchas empresas han comenzado a interactuar con la comunidad del software libre, pero se tiene dificultad en la elección de las licencias de software libre, y la selección de qué software se liberará.

Un ejemplo de una relativamente exitosa entrada a la comunidad del software libre es Sun Microsystems, liberación de StarOffice como OpenOffice.org bajo la GNU Lesser General Public License. Esto fue calurosamente recibido por la comunidad software libre que no tenía una suite ofimática madura en ese momento. Un ejemplo de una entrada más difícil para la comunidad del software libre es el de Real Networks, éste escribió su propia licencia, y puso en libertad sólo una parte de su suite de software. En particular, el códec de los programas informáticos necesarios para ver archivos Real Video, no fue puesto en libertad.

Comunidades de Software Libre en Venezuela

A continuación se listan algunas de las comunidades dek softre libre de Venezuela:

1. Comunidad de Software Libre - Team Carabobo

TeamCarabobo, está formado por personas de todas las clases sociales, de todos los géneros, detodas las edades, pero unidos en sus principios, en sus ideales, en la filosofía Ubuntu y en la participación activa en el movimiento del Software Libre en Venezuela. con la ardua tarea de promover el uso de esta herramienta tecnológica, en difundir a las comunidades en general su filosofía, historia, actualidad y futuro.

2. Comunidad de Software Libre - Ubuntu-ve

Ubuntu-ve es un grupo de personas que se han organizado como comunidad con el objetivo de darse soporte mutuamente en el uso cotidiano de Ubuntu. Entre los miembros de esta comunidad existe una gran diversidad de orígenes, algunos son expertos en computadoras, pero la mayoría son usuarios comunes que usan Ubuntu en su casa o en su trabajo diariamente. Formamos lo que se llama una “Comunidad de Usuarios” La función primordial de esta comunidad es agrupar a los usuarios de Ubuntu y sus derivados, a fin de promover como grupo la adopción de sistemas libres.

3. Comunidad de Software Libre - VaSlibre (Valencia Software Libre) 

Es una comunidad de usuarios de GNU/Linux residenciados en Valencia - Venezuela, con la firme intención de difundir el uso del Software Libre. No recomendamos una distribución especifica, usas las que más se adapte a tus necesidades y requerimientos.

4. Comunidad de Software Libre - PingüinoVE

PingüinoVE es un Proyecto Tecnológico, que persigue como objetivo fundamental, promover el desarrollo del movimiento de Hardware Libre en Venezuela, para estimular la producción nacional de tecnologías, mediante la obtención de una Plataforma Integral de Diseño y Desarrollo que facilite el prototipado rápido y la fabricación sustentable de dispositivos electrónicos orientados a satisfacer necesidades humanas en múltiples ámbitos y/o espacios de nuestra sociedad.

5. Plug - Grupo de Usuarios de GNU/Linux de Portuguesa

Plug, es un grupo de usuarios muy joven y estan encargado de hacer conocer al Software Libre en el Estado Portuguesa

6. Unplug - "Donde el novato se respeta"

Unplug, es un grupo de usuarios de GNU/Linux organizados y conformados para dedicarse a la tarea de difundir GNU/Linux en Venezuela y el mundo. Nuestra organización, teniendo eso como meta es garante de que sus miembros lleven a cabo diversos eventos como son: Festivales de Instalación (mejor llamados INFEST), Charlas, Talleres, Foros de Discusión y reuniones de índole afín a la difusión de GNU/Linux. 

7. BolivarLug - Grupo de Usuarios de Software Libre GNU/Linux del Estado Bolívar

BolivarLug, es un grupo de usuarios de GNU/Linux organizados y conformados para dedicarse a la tarea de dif
undir GNU/Linux en el estado Bolívar, Venezuela y el mundo. Nuestra organización, teniendo eso como meta es garante de que sus miembros lleven a cabo diversos eventos como son: Festivales de Instalación (mejor llamados INFEST), Charlas, Talleres, Foros de Discusión y reuniones de índole afín a la difusión de GNU/Linux. 

8. GuayanaLug - Grupo de Usuarios de GNU/LINUX de Ciudad Guayana

GuayanaLug, es un grupo de usuarios de GNU/Linux organizados y conformados para dedicarse a la tarea de difundir GNU/Linux en el estado Bolívar, Venezuela y el mundo. Nuestra organización, teniendo eso como meta es garante de que sus miembros lleven a cabo diversos eventos como son: Festivales de Instalación (mejor llamados INFEST), Charlas, Talleres, Foros de Discusión y reuniones de índole afín a la difusión de GNU/Linux.

jueves, 28 de agosto de 2014

A continuación se presenta un mapa mental con ños aspectos legales y licencias mas importante relacionados al software libre.

Uno de los puntos en que con mayor frecuencia se confunden los usuarios de computadoras, es en el tipo de licencia que ofrece el software. 

Las licencias básicamente son un contrato entre el autor del programa y el usuario, y comprenden una serie de términos y cláusulas que el usuario deberá cumplir para usar el mismo. Esto rige en todos los programas, comerciales, o libres y gratuitos, pero en este último caso, las condiciones siempre están a favor del usuario final.

Copyleft
La mayoría de las licencias usadas en la publicación de software libre permite que los programas sean modificados y redistribuidos. Estas prácticas están generalmente prohibidas por la legislación internacional de copyright, que intenta impedir que alteraciones y copias sean efectuadas sin la autorización del o los autores. Las licencias que acompañan al software libre hacen uso de la legislación de copyright para impedir la utilización no autorizada, pero estas licencias definen clara y explícitamente las condiciones bajo las cuales pueden realizarse copias, modificaciones y redistribuciones, con el fin de garantizar las libertades de modificar y redistribuir el software registrado. A esta versión de copyright, se le da el nombre de copyleft.
GPL
La Licencia Pública General GNU (GNU General Public License GPL) es la licencia que acompaña los paquetes distribuidos por el Proyecto GNU, más una gran varidad de software que incluye el núcleo del sistema operativo Linux. La formulación de GPL es tal que en vez de limitar la distribución del software que protege, llega hasta impedir que este software sea integrado en software propietario. La GPL se basa en la legislación internacional de copyright, lo que debe garantizar cobertura legal para el software licenciado con GPL.
Debian
La licencia Debian es parte del contrato realizado entre Debian y la comunidad de usuarios de software libre, y se denomina Debian Free Software Guidelines (DFSG). En esencia, esta licencia contiene criterios para la distribución que incluyen, además de la exigencia de publicación del código fuente: (a) la redistribución libre ; (b) el código fuente debe ser incluido y debe poder ser redistribuido; (c) todo trabajo derivado debe poder ser redistribuido bajo la misma licencia del original; (d) puede haber restricciones en cuanto a la redistribución del código fuente, si el original fue modificado; (e) la licencia no puede discriminar a ninguna persona o grupo de personas, así como tampoco ninguna forma de utilización del software; (f) los derechos otorgados no dependen del sitio en el que el software se encuentra; y (g) la licencia no puede 'contaminar' a otro software.
Open Source
La licencia de Open Source Initiative deriva de Debian.
BSD
La licencia BSD cubre las distribuciones de software de Berkeley Software Distribution, además de otros programas. Ésta es una licencia considerada “permisiva”, ya que impone pocas restricciones sobre la forma de uso, alteraciones y redistribución del software. El software puede ser vendido y no hay obligaciones de incluir el código fuente. Esta licencia garantiza el crédito a los autores del software pero no intenta garantizar que las modificaciones futuras permanezcan siendo software libre.
X.org
El Consorcio X distribuye X Window System bajo una licencia que lo hace software libre, aunque sin adherirse al copyleft. Existen distribuciones bajo la licencia de la X.org que son software libre, y otras distribuciones que no lo son. Existen algunas versiones no-libres del sistema de ventanas X11 para estaciones de trabajo y ciertos dispositivos de IBM-PC que son las únicas funciones disponibles, sin otros similares que sean distribuidos como software libre.
Software con Dominio Público
El Software con dominio público es software sin copyright. Algunos tipos de copia o versiones modificadas pueden no ser libres si el autor impone restricciones adicionales en la redistribución del original o de trabajos derivados.
Software Semi-libre
El Software semi-libre es un software que no es libre pero permite que otros individuos lo usen, lo copien, lo distribuyan y hasta lo modifiquen. Ejemplos de software semi-libre son las primeras versiones de Internet Explorer de Microsoft, o algunas versiones de browsers de Netscape, y StarOffice.
Freeware
El término freeware no posee una definición ampliamente aceptada, pero es utilizada para programas que permiten la redistribución pero no la modificación, y que incluyen su código fuente. Estos programas no son software libre.
Es un programa gratuito. Sin embargo, no es libre. En este tipo de licencia el autor puede restringir su programa al uso empresarial, redistribución no autorizada, modificación por usuarios y otro tipo de restricciones. (p. e. Internet Explorer, Adobe Flash Player, Windows Live Messenger)
Shareware
Shareware es el software disponible con el permiso para que sea redistribuido, pero su utilización implica el pago. Generalmente, el código fuente no se encuentra disponible, y por lo tanto es imposible realizar modificaciones. Es un programa distribuido gratuitamente, pero por tiempo limitado o con algunos recursos restringidos. A través del pago de un valor definido por el autor del programa, se puede obtener el registro del programa o la versión integral con todos los recursos. Abarca las licencias adware, trial y demo.
Software Propietario
El Software propietario es aquel cuya copia, redistribución o modificación están, en alguna medida, prohibidos por su propietario. Para usar, copiar o redistribuir, se debe solicitar permiso al propietario o pagar.
Software Comercial
El Software comercial es el software desarrollado por una empresa con el objetivo de lucrar con su utilización. Nótese que "comercial" y "propietario" no son lo mismo. La mayor parte del software comercial es propietario, pero existe software libre que es comercial, y existe software no-libre que no es comercial.
Adware
Subprograma que descarga publicidad sobre otro programa principal. Esto ocurre cuando un programa tiene versiones comerciales o más avanzadas que necesitan ser compradas para poder ser utilizadas. Pagando por la versión comercial, esos anuncios desaparecen. Es una licencia muy poco usada. Un ejemplo es el Ashampoo Burning Studio 2009.
Trial
Versión de programa pago, distribuido gratuitamente con todos los recursos activos, pero por un tiempo determinado. Es como un programa freeware, que después de determinado tiempo deja de funcionar. Para continuar con la utilización del programa, se debe comprar la clave de registro e insertarla en el programa, para que vuelva a ejecutarse. Ejemplo: Nero, Alcohol 120% y Photoshop.
Crippleware
Es un programa con menos recursos y funciones. Muy conocido como "versión lite". Ideal para ser usado en computadoras viejas. Ejemplo: BurnAware Free.
Donationware
Versión de programa en la que el autor solicita una donación, para cubrir los gastos del desarrollo del programa. No es obligatoria, pero si solicitada. El programa no sufre variantes por realizar o no la donación. Ejemplo: FreeRapid Downloader, Linux Slax.
Abandonware
Programa cuyo desarrollo fue abandonado. El autor debe anunciar públicamente el abandono del programa para ser abandoware, mientras tanto el programa está protegido contra los derechos de copia (copyright). Si la discontinuidad es anunciada, el programa puede ser distribuido y modificado por cualquier usuario o desarrollador.
"Queda asegurada la tutela de los derechos relacionados a programas informáticos por el plazo de cincuenta años, a partir del 1 de enero del año siguiente de su publicación o, en la ausencia de esta, de su creación."
Licencias bastante extrañas o muy poco utilizadas
Careware
Licencia de programa que solicita la ayuda de donaciones para fondos de caridad y organizaciones de ayuda humanitaria.
Postcardaware (o cardaware)
Tipo de licencia en la que el autor solicita que una tarjeta o postal se le sea enviada. El usuario es sólo invitado a hacer eso. Muy similar al Emailware, en que los usuarios mandan e-mails al autor del programa.
El software abierto, hace referencia al término “código abierto”, el cual fue acuñado por Christine Peterson del Think Tank Foresight Institute, y se registró para actuar como marca registrada el término en inglés para los productos de software libre.

Mucha gente reconoce el beneficio cualitativo del proceso de desarrollo de software cuando los desarrolladores pueden usar, modificar y redistribuir el código fuente de un programa, todos ellos aspectos originalmente planteados por Richard Stallman y la Free Software Foundation (FSF). Para un análisis detallado de las ventajas que estas libertades presentan a la hora de desarrollar software, les recomiendo leer “La Catedral y el Bazar” de Eric S. Raymond.
En artículos anteriores, se comentó que el movimiento del software libre hace especial énfasis en los aspectos morales o éticos del software, viendo la excelencia técnica como un producto secundario deseable, pero derivado de su estándar ético. Mientras que el movimiento de código abierto ve la excelencia técnica como el objetivo prioritario, siendo la compartición del código fuente un medio para dicho fin. Por ese motivo, la FSF se distancia tanto del movimiento de código abierto como del término “Código Abierto” (en inglés Open Source).
Puesto que la OSI sólo aprueba las licencias que se ajustan a la OSD (Open Source Definition, Definición de Código Abierto), la mayoría de la gente lo interpreta como un esquema de distribución, e intercambia libremente “código abierto” con “software libre”. Aun cuando existen importantes diferencias filosóficas entre ambos términos, especialmente en términos de las motivaciones para el desarrollo y el uso de tal software. Sin embargo, estas diferencias raramente suelen tener impacto en el proceso de colaboración.
El movimiento del “código abierto”, a través de la Iniciativa Open Source, es diferente al movimiento del software libre, cuyo epicentro es la Free Software Foundation. Sin embargo, a pesar de ser incompatibles desde el punto de vista filosófico, son casi equivalentes desde el punto de vista práctico; de hecho, ambos movimientos trabajan juntos en el desarrollo práctico de numerosos proyectos.
Condiciones  o requisitos “código abierto”.
Al igual que el software libre tiene 4 libertades (libertad para usar, personalizar, distribuir y mejorar y publicar dichas mejoras), el código abierto u open source tiene una serie de requisitos necesarios para que un programa pueda considerarse dentro de este movimiento, éstos son:
1.  Libre redistribución: el software debe poder ser regalado o vendido libremente.
2.  Código fuente: el código fuente debe estar incluido u obtenerse libremente.
3. Trabajos derivados: la redistribución de modificaciones debe estar permitida.
4. Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches.
5. Sin discriminación de personas o grupos: nadie puede dejarse fuera.
6. Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden ser excluidos.
7. Distribución de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa
8. La licencia no debe ser específica de un producto: el programa no puede licenciarse solo como parte de una distribución mayor.
9. La licencia no debe restringir otro software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto.
10. La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software.

Este decálogo es compatible con las cuatro libertades del software libre.
FOSS & FLOSS
Aunque el término “código abierto” elimina la ambigüedad del término “free”, confundiéndose sus dos acepciones “libre” vs. “gratuito”, introduce una nueva: entre los programas que se ajustan a la definición de Código Abierto, que dan a los usuarios la libertad de mejorarlos, y los programas que simplemente tiene el código fuente disponible, posiblemente con fuertes restricciones sobre el uso de dicho código fuente.
Mucha gente cree que cualquier software que tenga el código fuente disponible es de código abierto, puesto que lo pueden manipular (un ejemplo de este tipo de software sería el popular paquete de software gratuito Graphviz, inicialmente no libre pero que incluía el código fuente, aunque luego AT&T le cambió la licencia). Sin embargo, mucho de este software no da a sus usuarios la libertad de distribuir sus modificaciones, restringe el uso comercial, o en general restringe los derechos de los usuarios.
Esto hace que el término “código abierto” continúe siendo ambivalente, puesto que algunas empresas malintencionadas o ignorantes utilizan el concepto para definir a sus productos cuando en realidad no se trata de software libre sino que simplemente ofrecen el código fuente de los programas para su uso, revisión o modificación previamente autorizada.
Dada la anterior ambivalencia, se prefiere el uso del término software libre para referirse a programas que se ofrecen con total libertad de modificación, uso y distribución bajo la regla implícita de no modificar dichas libertades hacia el futuro.

Un término que pretende resolver posibles ambigüedades o confusiones que ambos términos generan es FOSS (free and open source software). También se utiliza el término FLOSS (free/libre and open source software).


domingo, 24 de agosto de 2014


A continuación, se listan algunos de los programas más populares para el modelaje en UML, bajo licencias libres, siendo posible su libre uso, estudio y modificación: 
  • ArgoUML, Herramienta de modelado UML escrito en java.
  • BOUML, Ligera herramienta de modelado UML y generación de código C++, Java e IDL. Disponible para Windows, Unix/Linux y Mac OS X 
  • Fujaba, No solo sirve para modelar sino que puede generar código Java automáticamente. También es capaz de hacer ingeniería inversa y crear los diagramas a partir del código Java . 
  • Dia Puede ser usado para modelar varios tipos de diagramas UML
  • gModeler Herramienta para modelado de UML basada en Flash (utilizable desde el navegador), que permite generar código Action Script 2.0 Compatible 
  • MonoUML Herramienta CASE para la plataforma mono 
  • Papyrus, Herramienta gráfica basada en Eclipse para el modelado con UML2, es de código abierto y se ofrece bajo licencia EPL
  • StarUML Herramienta de modelado para Windows desarrollada en Delphi. Bastante estable y usable 
  • TCM, Toolkit for Conceptual Modeling, herramienta para crear diversos tipos de diagramas incluidos UML 
  • Umbrello Herramienta para modelado UML para el entorno KDE 
  • UMLet Herramienta para modelado rápido de UML también escrita en Java 
  • Netbeans modulo UML 
Freeware para el modelaje en UML 

Aunque gratuitos, estos programas se encuentran bajo licencias que no permiten el estudio y modificación de los mismos. 
  • JUDE Community Herramienta de modelado UML 
  • Omondo plugin para Eclipse. Herramienta de modelado UML para Java 
  • Oracle JDeveloper Un IDE para Java con soporte de diagramas UML 
  • Visual Paradigm for UML, Herramienta de modelado UML y herramienta CASE que cuenta con una versión gratuita denominada Community Edition 
Software privativo para el modelaje en UML 



¿Qué es UML?

Lenguaje Unificado de Modelado (UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema de software. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocios y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes de software reutilizables.

Es importante resaltar que UML es un "lenguaje" para especificar y no para describir métodos o procesos. Se utiliza para definir un sistema de software, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo. Se puede aplicar en una gran variedad de formas para dar soporte a una metodología de desarrollo de software (tal como el Proceso Unificado Racional), pero no especifica en sí mismo qué metodología o proceso usar.

Importancia del UML



Hoy en día, UML ("Unified Modeling Language") está consolidado como el lenguaje estándar en el análisis y diseño de sistemas de computo. Mediante UML es posible establecer la serie de requerimientos y estructuras necesarias para plasmar un sistema de software previo al proceso intensivo de escribir código.

En otros términos, así como en la construcción de un edificio se realizan planos previo a su construcción, en Software se deben realizar diseños en UML previa codificación de un sistema, ahora bien, aunque UML es un lenguaje, éste posee más características visuales que programáticas, mismas que facilitan a integrantes de un equipo multidisciplinario participar e intercomunicarse fácilmente, estos integrantes siendo los analistas, diseñadores, especialistas de área y desde luego los programadores.

Entre más complejo es el sistema que se desea crear más beneficios presenta el uso de UML ("Unified Modeling Language"), las razones de esto son evidentes, sin embargo, existen dos puntos claves : El primero se debe a que mediante un plano/visión global resulta más fácil detectar las dependencias y dificultades implícitas del sistema, y la segunda razón radica en que los cambios en una etapa inicial (Análisis) resultan más fáciles de realizar que en una etapa final de un sistema como lo seria la fase intensiva de codificación.

Puesto que UML es empleado en el análisis para sistemas de mediana-alta complejidad, era de esperarse que su base radica en otro paradigma empleado en diseños de sistemas de alto nivel que es la orientación a objetos, por lo que para trabajar en UML puede ser considerado un PRE-requisito tener experiencia en un lenguaje orientado a objetos.


Críticas al UML



A pesar de su status de estándar ampliamente reconocido y utilizado, UML siempre ha sido muy criticado por su carencia de una semántica precisa, lo que ha dado lugar a que la interpretación de un modelo UML no pueda ser objetiva. Otro problema de UML es que no se presta con facilidad al diseño de sistemas distribuidos. En tales sistemas cobran importancia factores como transmisión, serialización, persistencia, etc. UML no cuenta con maneras de describir tales factores. No se puede, por ejemplo, usar UML para señalar que un objeto es persistente o remoto, o que existe en un servidor que corre continuamente y que es compartido entre varias instancias de ejecución del sistema analizado. Sin embargo, UML si acepta la creación de nuestros propios componentes para este tipo de modelado.

















sábado, 23 de agosto de 2014

A continuación se presenta un mapa conceptual que resume los aspectos mas importantes de la Ingeniería del Software Libre (software, gestión de proyectos, metodologías).

Mapa Mental de la Ingeniería del Software Libre

Las metodologías ágiles promueven la formalización de procesos adaptables. La compilación de los principios y valores que resaltan las metodologías ágiles fue formalizada en el manifiesto para el desarrollo de software ágil basadas en heurísticas provenientes de prácticas de producción de código, especialmente preparados para cambios durante el proyecto.

Manifestos Agil


En el Manifiesto Ágil (2001), firmado por Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert Cecil Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland y Dave Thomas, se expone que:

"... Estamos poniendo al descubierto mejores métodos para desarrollar software, haciéndolo y ayudando a otros a que lo hagan. Con este trabajo hemos llegado a valorar:
1. A los individuos y su interacción, por encima de los procesos y las herramientas.2. El software que funciona, por encima de la documentación exhaustiva.3. La colaboración con el cliente, por encima de la negociación contractual.4. La respuesta al cambio, por encima del seguimiento de un plan.
Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda..."

El manifiesto ágil constituye un conjunto de características que diferencian un proceso ágil de uno tradicional. Los dos primeros principios son generales y resumen gran parte del espíritu ágil. El resto tienen que ver con el proceso a seguir y con el equipo de desarrollo, en cuanto metas a seguir y organización del mismo.



The Agile Alliance es una organización, sin ánimo de lucro, dedicada a promover los conceptos relacionados con el desarrollo ágil de software y ayudar a las organizaciones para que adopten dichos conceptos. El punto de partida fue el Manifiesto Ágil, un documento que resume la filosofía ágil.

Metodologías son aplicables al mundo del Software Libre



Exiten disversas metodologías de desarrollo de software, que promueven el desarrollo colaborativo y por tanto se ajusta a los modelos de desarrollo del entorno del software libre. Algunas de estas son: 

1. SCRUM: modelo de desarrollo ágil caracterizado por: adoptar una estrategia de desarrollo incremental, en lugar de la planificación y ejecución completa del producto; basar la calidad del resultado más en el conocimiento tácito de las personas en equipos autoorganizados, que en la calidad de los procesos empleados; y solapamiento de las diferentes fases del desarrollo, en lugar de realizar una tras otra en un ciclo secuencial o de cascada.

2. Crystal Methodologies: se trata de un conjunto de metodologías para el desarrollo de software caracterizadas por estar centradas en las personas que componen el equipo (de ellas depende el éxito del proyecto) y la reducción al máximo del número de artefactos producidos. Han sido desarrolladas por Alistair Cockburn. El desarrollo de software se considera un juego cooperativo de invención y comunicación, limitado por los recursos a utilizar. El equipo de desarrollo es un factor clave, por lo que se deben invertir esfuerzos en mejorar sus habilidades y destrezas, así como tener políticas de trabajo en equipo definidas. Estas políticas dependerán del tamaño del equipo, estableciéndose una clasificación por colores, por ejemplo Crystal Clear (3 a 8 miembros) y Crystal Orange (25 a 50 miembros).

3. Dynamic Systems Development Method (DSDM): es un ágil marco de ejecución de proyectos, que se utiliza principalmente como un método de desarrollo de software. Representan un enfoque genérico para la gestión de proyectos y la solución de entrega. DSDM es un iterativo e incremental enfoque que adopta los principios de desarrollo Agile, incluyendo la participación continua de usuario / cliente, fijando costo, la calidad y el tiempo desde el principio y utiliza la priorización de Moscú de alcance en los mostos, deberes, coulds y no los que tienen que ajustar el proyecto entregables a cumplir con la limitación de tiempo establecido. 

4. Adaptive Software Development ASD: es una metodología impulsada por Jim Highsmith que incorpora el principio de la adaptación continua, o sea, adaptarse al cambio y no luchar contra él. En ella no hay un ciclo de vida estático (planear-diseñar-construir), si no que ofrece un ciclo de vida iterativo, donde cada ciclo puede ser modificado al tiempo que otro es ejecutado. Se caracteriza por ser iterativo, orientado a los componentes software más que a las tareas, tolerante a los cambios, guiado por los riesgos y revisión de los componentes sirve para aprender de los errores y volver a iniciar el ciclo de desarrollo. El ciclo utilizado por ASD es conocido como: Especular-colaborar-aprender, el cual está dedicado a un constante aprendizaje y colaboración entre desarrollador y cliente.
Feature -Driven Development

El desarrollo de software libre se basa en gran parte en unas herramientas que permiten sincronizarse con el trabajo de los diferentes desarrolladores del proyecto, de manera que la distribución geográfica no suponga un problema. Los sistemas de control de versiones y los gestores de erratas (también usados ocasionalmente para tareas de planificación) se han convertido en herramientas imprescindibles para proyectos de software libre grandes, y no tan grandes.


Métricas y modelos utilizados en el Software Libre



La medición y el análisis de datos relacionados con el desarrollo de software libre se hacen imprescindibles para alcanzar los objetivos que la ingeniería del software libre persigue. En este sentido, existen diversas métricas utilizadas en el entorno del software libre:

1. Métricas de Calidad: proporcionan una indicación de cómo se ajusta el software a los requisitos implícitos y explícitos del cliente. Es decir cómo voy a medir para que mi sistema se adapte a los requisitos que me pide el cliente.

2. Métricas de Productividad: Se centran en el rendimiento del proceso de la ingeniería del software. Es decir que tan productivo va a ser el software que voy a diseñar.

3. Métricas Orientadas a la Persona: Proporcionan medidas e información sobre la forma que la gente desarrolla el software de computadoras y sobre todo el punto de vista humano de la efectividad de las herramientas y métodos. Son las medidas que voy a hacer de mi personal que va hará el sistema.

4. Métricas Orientadas al Tamaño: Es para saber en qué tiempo voy a terminar el software y cuantas personas voy a necesitar. Son medidas directas al software y el proceso por el cual se desarrolla, si una organización de software mantiene registros sencillos.

5. Métricas Orientadas a la Función: Son medidas indirectas del software y del proceso por el cual se desarrolla. En lugar de calcularlas las LDC, las métricas orientadas a la función se centran en la funcionalidad o utilidad del programa

Modelos de Desarrollo


A pesar de que el desarrollo del software libre cuenta con varias décadas de crecimiento, sólo desde hace unos pocos años que 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. De la misma forma que no existe un único modelo de desarrollo de software propietario, tampoco existe uno del software libre, pero se pueden encontrar características interesantes que comparten gran parte de los proyectos estudiados, y libres

En 1997, Eric S. Raymond publicó un primer artículo ampliamente difundido llamado “La catedral y el bazar”, donde se describen algunas de las características de los modelos de desarrollo de software libre, prestándole una atención especial a lo que diferencia estos modelos de los de desarrollo propietario. Desde entonces, este artículo se ha convertido en uno de los más conocidos, y criticados, del mundo.

De acuerdo a lo descrito en el artículo existen dos modalidades o modelos de desarrollo de software libre:

1. Estilo Bazar: En este caso, el desarrollo de software no es dirigido de manera centralizada, la construcción de la aplicación se realiza con la participación de una comunidad de interesados que libera frecuentemente cada versión desarrollada, con la finalidad de que otros puedan depurar el código.

2. Estilo Catedral: En el estilo catedral el desarrollo de software está dirigido de manera centralizada y el proceso de desarrollo esta restringido a un grupo de programadores, quienes trabajan fuertemente en la depuración del código con la finalidad de que los usuarios puedan ver menos errores en cada versión liberada.

Gestión de proyectos


La gestión de proyectos es la disciplina que agrupa y ordena el conjunto de tareas o actividades destinadas a alcanzar unos objetivos determinados, incluye la planificación, definición, ordenamiento y gestión de las actividades que formarán el proyecto software, permitiendo reducir al mínimo las posibilidades de fallo y optimizando el uso de los recursos (tiempo, dinero, personas, equipos, etc.) en cada fase del mismo.

Por lo general, la gestión del proyecto es llevada a cabo por el director del proyecto, que se ocupa de monitorizar su progreso y coordinar las actividades de los grupos que intervienen en éste para minimizar el riesgo de fallo del proyecto, utilizando como herramientas principal diagramas de Gantt para mostrar de una forma clara la sucesión de tareas, recursos involucrados y sus dependencias.

En entornos de software libre, no existe una forma “tradicional” de gestionar un proyecto. Sin embargo hay una tendencia según el tamaño de proyecto, teniendo así que:

1. En los proyectos grandes de software libre: como el desarrollo del núcleo Linux o el servidor web Apache, están formados por un comité de gestión del proyecto, encargado de definir los pasos que se llevaran a cabo en el proyecto, y las actividades a realizar por cada personas o equipo para alcanzar los objetivos. De manera inversa, el comité de aprobación determina que cambios o nuevas funcionalidades propuestas por los usuarios u otros desarrolladores se incorporan al proyecto o no. En proyecto de gran envergadura es fundamental las herramientas de soporte y comunicación entre los diferentes equipos, tales como los programas de gestión de incidencias (Bugzilla) o entornos (Sourceforge) que ayudan a los gestores del proyecto o a los comités organizadores a conocer el estado del proyecto, la opinión de sus usuarios, las aportaciones de los desarrolladores, etc.

2. En los proyectos pequeños o medianos de software libre: no acostumbran a seguir una metodología tradicional. Por el contrario se orientan más a una gestión ágil del proyecto, siguiendo principios acordes con el software libre, primando la publicación de nuevas funcionalidades y versiones del proyecto al cumplimiento de un calendario rígido de actividades e hitos. El director del mismo suele intervenir muy estrechamente en el desarrollo y en el resto de actividades. Este tipo de proyectos suelen gestionarse mediante simples listas de requisitos y fallos por resolver, siendo el gestor o los desarrolladores quienes den prioridad a las tareas, y decidan cuáles van a incorporar en las nuevas versiones del proyecto.

¿Qué es Ingeniería de Software?

La Ingeniería de software es la rama de la ingeniería que crea y mantiene las aplicaciones de software aplicando tecnologías y prácticas de las ciencias computacionales, manejo de proyectos, ingeniería, el ámbito de la aplicación, y otros campos.

¿Qué es Ingeniería de Software Libre?

En la actualidad, los cálculos de plazos y de costes en los proyectos de software tradicionales (en su gran mayoría de software propietario) son difícilmente cuantificables y dentro del mundo del software libre son una odisea.

El modelo de desarrollo del SL es atípico y no convencional, se basa en un entorno distribuido y colaborativo donde todos pueden colaborar programando porciones del software ó en diferentes tareas específicas (traducción, arte, etc.), no busca crear software en menor tiempo, a menores costos y de una mayor calidad, surgio de manera espontánea y natural.

Existen quiénes creen que la ingeniería de software libre no existe, sino que la ingeniería de software es tan amplia que cubre fácilmente el software libre y privativo., y que se fue adecuando de manera natural a través de los años

La Ingeniería de Software Libre permite que la metodología para el desarrollo de aplicaciones se lleve a cabo de manera amplia, bajo cualquier paradigma (estructurado u orientado a objeto), no limita a los analistas y/o diseñadores a utilizar una técnica de modelado y diagramación, como UML o el modelado estructurado, ni ofrece recomendaciones que permitan evaluar el nivel de calidad de una organización.

La ingeniería del Software Libre 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, promoviendo el uso de técnicas y herramientas (sistemas operativos, lenguajes de programación, bases de datos, etc) de carácter libre, tomando en consideración  el tiempo y los recursos asignados para cumplir con las tareas involucradas, evitando la pérdida de tiempo o abandono de los proyectos.

La ingeniería del software libre pretende cuantificar unos parámetros que nos permitan predecir con exactitud costes, plazos y recursos humanos. En este sentido, su objetivo es definir las formas para que los desarrolladores de software libre produzcan software de gran calidad siguiendo paradigmas de creación, producción y mantenimiento que así lo certifiquen.