domingo, 26 de junio de 2011

Comunidades de software libre en Venezuela

Anexo presento un resumen de algunas de las principales comunidades que trabajan en pro del desarrollo del software libre en Venezuela:

1.- Comunidad venezolana de software libre: http://covesolib.org/: esta comunidad  pretende hacer presencia en la web dando espacio para  agrupar ideas, conocimientos, soluciones y  el impulso del uso de Software Libre en Venezuela.

2.- - Grupo de Usuarios de GNU/Linux de  Portuguesa: http://www.plug.org.ve/. : es un grupo de usuarios muy jóvenes que están encargados de hacer conocer al Software Libre en el Estado  Portuguesa

3.- El Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL) http://www.cenditel.gob.ve/: surge como una iniciativa para impulsar los procesos necesarios que  permitan transitar el camino hacia el verdadero rol que  deben cumplir la ciencia, la tecnología y la innovación  para alcanzar el desarrollo económico, social y político  de la nación.

4.- http://www.softwarelibre.gob.ve/index.php: Es una página impulsada por el Ministerio del Poder  popular para Ciencia, tecnología e industrias  intermedias, siendo otro ejemplo de cómo ha sido el  estado venezolano uno de los principales  patrocinadores del estudio y desarrollo de aplicaciones  libres a nivel nacional. La misión que posee esta  comunidad es la de “constituirse en la guía de  referencia oficial para la ciudadanía nacional e  internacional, del uso, desarrollo y apropiación del  software libre en la sociedad venezolana, representada  en sus tres aspectos fundamentales, como lo son las  Instituciones de Gobierno, las sociedades mercantiles  y la sociedad en general

5.-http://planetalinux.org/ve/: PlanetaLinux es una comunidad de usuarios, desarrolladores y activistas iberoamericanos de software libre, GNU/Linux y similares. A través de los blogs, de cada uno de los miembros de esta comunidad, se entera de lo que pasa, de primera mano, a nuestro alrededor de una forma divertida y actualizada al día por día

6.-turpial.org.ve: esta comunidad se enfoca en el desarrollo de Turpial. “Un cliente alternativo para microblogging con múltiples interfaces. Está escrito en Python y tiene como meta ser una aplicación con bajo consumo de recursos y que se integre al escritorio del usuario pero sin renunciar a ninguna funcionalidad.” Turpial, las imágenes y los sonidos han sido publicados bajo la licencia GPLv

7.- http://wiki.velug.org.ve/ : La misión principal de esta comunidad es dar soporte a todos los usuarios Linux del país, sin importar la distribución de Linux que están utilizando.

8.- http://mozillavenezuela.org/: esta comunidad tiene como principal objetivo promover las tecnologías de la web y poder llevar el mensaje de la Fundación Mozilla, la cual  vela por crear estándares web para que sea más  semántica, menos monopolizada, y más cool.

9.-  Proyecto GNU Venezuela http://gnu.org.ve/: es un ente generador y articulador de proyectos donde se integran todo tipo de actores del movimiento del Software Libre junto a las demás áreas del quehacer nacional, con el objetivo de promover y defender la libertad del conocimiento en materia de ciencia y tecnología.

10.- Grupo de Usuarios de GNU/LINUX del Instituto Universitario  de Tecnología de Yaracuy http://iutyglug.org.ve : es la comunidad de Usuarios de Software Libre del Instituto Universitario de Tecnología  de Yaracuy que tiene como objetivo promover el uso de  Software Libre y motivar a las personas a su utilización y participación del libre conocimiento, brindando asistencia técnica  y asesoramiento al momento de elegir alguna distribución, o sobre  software libre.

Además de estas, existen muchas más comunidades de software libre en el país.

sábado, 25 de junio de 2011

Software libre en Venezuela

Como ya he mencionado anteriormente el software libre tiene sus primeras manifestaciones en los años 80 donde se sientan los fundamentos éticos del software libre, en Venezuela no es hasta pasado el siglo XXI que se logra generar un interés mayor por el desarrollo y adopción del software libre. Ciertamente antes de esta fecha existían personas trabajando dentro de este ámbito, pero no es hasta la aparición del decreto 3390 (en 2004)  que el país y en principal la administración pública pone todo su interés en conocer más sobre esta concepción de software que contrapone el paradigma del software propietario existe en la mayoría del país.

A nivel nacional el Centro Nacional de Tecnologías de Información (CNTI), adscrito al Ministerio de Ciencia, Tecnología e Industrias Intermedias, es el ente encargado de acelerar el proceso de migración de la Administración Pública al Software libre.  El CNTI tiene como visión Consolidar un sistema de tecnologías de información del Estado, que apoye la gestión de la Administración Pública, a la comunidad organizada y al ciudadano; y haber contribuido a la creación de una fuerte industria nacional de software, todo ello en concordancia con los principios de soberanía  Por lo tanto el CNTI, funge como el ente rector de las tecnologías de información y como principal responsable del cumplimiento del decreto, considerando que la adopción del Software Libre en la Administración Pública, facilitará la interoperabilidad de los sistemas de información del Estado.

Ya han pasado 7 años desde la aprobación del decreto 3390 y aunque los resultados no han sido masivos, tenemos que reconocer que se han hecho grandes trabajos en cuanto a la incorporación de software libre a nivel nacional.

Dentro de la guía de migración a software libre en la administración Pública Nacional (APN) desarrollada por el CNTI, se establecen una serie de ventajas que ofrece el software libre, entre las que se encuentran:

Independencia tecnológica: El Estado deja de depender de terceros (a menudo transnacionales) para el diseño, desarrollo y mantenimiento de sus sistemas de información, retomando el control total de sus procesos, en particular de los procesos críticos y de alta importancia estratégica para el país.

Control de la información: El acceso al código fuente, la libertad de inspeccionar el funcionamiento del software, la libertad de decidir la manera en que almacenan los datos y la posibilidad de modificar cualquiera de estos aspectos queda en manos del Estado, lo cual le permite el control total de la información y por consiguiente el ejercicio de la Soberanía Nacional.

Confiabilidad y estabilidad: El software libre realizado por comunidades está sometido a la inspección de un importante número de personas, este número de verificadores es mucho mayor que el del software propietario. Estas personas identifican los problemas, los resuelven, y comparten las soluciones con los demás. Por tal razón los programas libres de las comunidades gozan de gran confiabilidad y estabilidad.

Seguridad: La información que el Estado maneja generalmente es importante y/o confidencial, puede ser muy peligroso que esta información caiga en manos incorrectas. Por esta razón es imprescindible que el Estado pueda verificar que su software no tenga puertas de entrada traseras, voluntarias o accidentales, y que pueda cerrarlas en caso de encontrarlas; tal control sólo es posible con el software libre.

Economía: contar con normas abiertas para la administración electrónica, el nivel de seguridad que proporciona la plataforma GNU/Linux, la eliminación de las actualizaciones forzosas. Esto permite disfrutar de una mayor economía en el uso y gestión de las Tecnologías de la Información y Comunicación (TIC).

Desarrollo de la industria nacional: al migrar a software libre, existirán requerimientos de aplicaciones específicas que se deben realizar mediante la inversión en materia tecnológica hacia EPS y empresas nacionales  (desarrollo endógeno).

Fuentes:

martes, 14 de junio de 2011

LICENCIAS DE SOFTWARE LIBRE

Continuando con el tema de los aspectos legales del software libre, aquí dejo un resumen de los licenciamientos asociados al tema.

Licencias de software libre robustas: contienen una cláusula que obliga que las obras derivadas o modificaciones que se realicen al software original se deben licenciar bajo los mismos términos y condiciones de la licencia original. Son firmes en el uso del copyleft. A continuación se presenta el ejemplo más representativo de este tipo de licencia:

a.- GNU GPL: (Licencia Pública General de GNU) Está orientada principalmente a proteger las 4 libertades: (1) ejecución y uso, (2) estudio y adaptación, (3) distribución de copias y modificación y (4) su liberación. Al ser un documento que cede ciertos derechos al usuario, asume la forma de un contrato, por lo que usualmente se la denomina contrato de licencia o acuerdo de licencia. La GPL incluye términos de distribución que no permiten a los redistribuidores añadir a su licencia cualquier restricción adicional (a las de la licencia original), ni al software original, ni a obras derivadas. Es la licencia más usada en el mundo del software libre con un 75% del código libre publicado.

Licencias de código abierto robustas débiles (mixtas): Son aquellas con copyleft  débil o híbridas, contiene una cláusula que obliga a que las modificaciones que se realicen en el software original se deban licenciar bajo los mismos términos o condiciones de la licencia original, pero que las obras derivadas que se puedan realizar de él puedan ser licenciadas bajo otros términos y condiciones distintas. Algunos ejemplos son:

a.- Mozilla Public License: Cumple completamente con la definición de software de código abierto de la Open Source Initiative (OSI) y con las cuatro libertades del software libre enunciadas por la Free Software Foundation (FSF). Sin embargo la MPL deja abierto el camino a una posible reutilización de forma comercial no libre del software, si el usuario así lo desea, sin restringir la reutilización del código ni el re-licenciamiento bajo la misma licencia. Aunque el uso principal de la MPL es servir como licencia de control para el navegador Mozilla y el software relacionado con él, esta licencia es ampliamente utilizada por desarrolladores y programadores que quieren liberar su código.
Tiene algunas restricciones complejas que la hacen incompatible con la GNU GPL

b.- LGPL (Lesser General Public Licence): La licencia menor es igual en condiciones y restricciones a la GPL común, con la diferencia que permite enlazar a software privativo, su uso sólo es recomendado en casos puntuales y estratégicos. Esta licencia permisiva se aplica a cualquier programa o trabajo que contenga una nota puesta por el propietario de los derechos del trabajo estableciendo que su trabajo puede ser distribuido bajo los términos de esta "GPL General Public License".

c.- Common Public License:  Se traduce como Licencias Pública Común, tiene el objetivo declarado de apoyar y fomentar el desarrollo colaborativo de software de código abierto al tiempo que conserva la capacidad de utilizar el contenido CPL con software licenciado bajo otras licencias, incluyendo muchas licencias privativas. Se diferencia de la GPL porque carece de compatibilidad con ambas versiones de la GPL ya que  tiene una sección "Cláusula de opción de ley" en la sección 7, que restringe disputas legales para un determinado tribunal. Otra fuente de incompatibilidad son los requisitos del diferente copyleft. La Free Software Foundation y la Open Source Initiative han aprobado los términos de licencia de la CPL.

Licencias de código abierto permisivas: Son aquellas licencias que permiten crear una obra derivada sin que esta tenga obligación de protección alguna, entre estas se encuentran:

a.- Apache software license: Existen tres versiones de la licencia Apache (1.0, 1.1. y 2.0) siendo la 2.0 la más empleada. Las dos primeras versiones carecen de Copyleft. La última versión es considerada una licencia de Software Libre. Incorpora ciertas condiciones extra relacionadas con patentes: exige incluir un permiso de uso de patentes por parte del autor/poseedor de las patentes y además puede rescindirse la licencia por problemas de patentes. Estas características la hacen incompatible con la GNU GPL 2, pero posiblemente no con la GNU GPL 3 en desarrollo, ya que esta contempla el problema de las patentes desde una perspectiva similar.

b.- BSD license: Este tipo de licencias se caracteriza por no tener copyleft. Considera que si el software es libre no debe imponer ninguna restricción en su distribución aunque esto signifique que cualquiera use el software para su propio beneficio y no comparta el código. Uno de los aspectos por lo que las licencias  BSD no eran consideradas libres por GNU era su cláusula de publicidad (también conocida como “4-clause”) que obligaban a hacer mención a la Universidad de Barkeley, lo cual era una restricción adicional. En el año 1999, esta cláusula fue eliminada y a partir de allí la licencia BSD se fragmento en dos tipos: las que incluían la “4-clause” y las que no. Hoy en día muchos proyectos grandes usan licencias del tipo BSD o inspiradas en su filosofía.

Fuentes:

domingo, 12 de junio de 2011

ASPECTOS LEGALES DEL SOFTWARE LIBRE



Las licencias de software libre son las que van a garantizar la ejecución de las libertades de ejecutar, usar, estudiar, adaptar, distribuir copiar, modificar y liberar las modificaciones del software al público. Para la protección de la libertad del software libre, Richard Stallman funda la Free Software Foundation (FSF), para la cual no es suficiente con cumplir las libertades básicas sino que las distribuciones ulteriores del programa continúen con las mismas libertades. Esta fundación establece que el único software realmente libre es aquel que se distribuye con una licencia GPL (con copyleft). Lo que diferencia el software libre de la FSF es precisamente el término de copyleft, ya que existe software libre que se distribuye con otras licencias, denominándolo código abierto (open sourse). El llamado código abierto intenta ofrecer una perspectiva sobre el software libre más pragmática y orientada al mundo empresarial y se le dio este nombre para diferenciarlo del software libre de la FSF que está relacionado con el copyleft. Por lo tanto este se caracteriza por también respetar las cuatro libertades del software libre pero no poseer copyleft. En definitiva queda claro que lo esencial en estas licencias es la distribución del código fuente del programa y que a excepción de la clausula de copyleft las discrepancias entre ambas no son legales sino de postura.

Algunas definiciones:

Copyleft: Es una práctica al ejercer el derecho de autor que consiste en permitir la libre distribución de copias y versiones modificadas de una obra u otro trabajo, exigiendo que los mismos derechos sean preservados en las versiones modificadas. Esta condición particular, establece la imposibilidad legal de capturar el software libre, modificarlo y privatizarlo. Es un término establecido por la Free Software Foundation (FSF).

Dominio público: Es todo aquel software sin copyright, es el modo más simple de hacer un programa libre. Esto permite que la gente comparta el programa y sus mejoras, si así lo desean. Pero también permite a quien no quiera cooperar, convertir el programa en software privativo. Pueden hacer cambios y distribuir el resultado como un producto privativo. Las personas que reciban el programa en su forma modificada no poseen la libertad que el autor original les dio debido a que el intermediario se la ha quitado.

INCompatibilidad de licencias: la incompatibilidad entre licencias se da cuando dos software distintos poseen requisitos contradictorios imposibilitando combinar partes de los mismos para crear uno nuevo. La proliferación de licencias muchas veces resulta problemático ya que conlleva a agravar la incompatibilidad y volver engorroso el proceso de licenciamiento del Software Libre, además de incrementar el número de textos legales que deberían leer los desarrolladores y distribuidores de Software Libre.

Las licencias software libre pueden ser: robustas, robustas débiles y permisivas. Estas las explicaré en una próxima publicación.

Fuentes:

lunes, 6 de junio de 2011

CONTROL DE CALIDAD DEL SOFTWARE

No es más que la realización de pruebas para detectar defectos, tratando de minimizar o eliminar la publicación de software defectuoso y  mejorando el resultado en diferentes iteraciones del ciclo de entrega – certificación.

Es la concordancia con los requerimientos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados y con las características implícitas que se esperan de todo software desarrollado profesionalmente”.

En las fuentes consultadas hacen referencia a  3 puntos importantes en definición de calidad de software:
1- Los requerimientos del software son los fundamentos desde los que se mide la calidad.
2- Los estándares específicos definen un conjunto de criterios de desarrollo que guían la forma de aplicación de la ingeniería de software.
3- Existen requerimientos implícitos que no se mencionan

La medición de la calidad del software puede hacerse desde tres grandes dimensiones:

1.-Pruebas de calidad: que pueden ser funcionales, de rendimientos, de estrés, de integración, de usabilidad entre otras.

2.-Gestión de calidad: subdividida en la planificación de la calidad, aseguramiento de la calidad y control de la calidad

3.-Modelos de calidad: CMMI, normas ISO / IEC , mosca , entre otros.

Un producto de alta calidad requiere menos mantenimiento y facilita tanto el desarrollo como el mantenimiento de la productividad. Con la medición de la calidad se pueden lograr estos objetivos. En lo que se refiere al mantenimiento, la medición de la calidad del software ayuda a identificar problemas de confiabilidad y a mejorar las técnicas para identificar las necesidades de mantenimiento.

La garantía de calidad de software engloba:

1.-Métodos y herramientas de análisis, diseño, codificación y prueba.
2.-Revisiones y técnicas formales que se aplican en cada fase de la ingeniería de software.
3.-Una estrategia de prueba multiescalada.
4.-El control de la documentación del software y de los cambios efectuados.
5.-Un procedimiento que asegure un ajuste a los estándares de desarrollo
6.-Mecanismos a medida y de información

Fuente:

Mapa Conceptual sobre la ingeniería del Software

Anexo coloco un mapa conceptual en donde resumí  un poco los principales elementos asociados al desarrollo de la ingeniería del software, pasando desde sus paradigmas, principios y metodologías hasta la medición de su calidad.


viernes, 3 de junio de 2011

Ciclo de vida del Software

Se llama ciclo de vida a las diferentes etapas por las que debe pasar el software desde su inicio (en donde es concebido)  hasta el final de su desarrollo en donde se encuentra listo para usarse.
Las etapas o fases suelen ser llamadas de diferentes maneras y su orden y presencia va a depender del tipo de  modelo acordado para desarrollar.

Las fases suelen ser:

1.-Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.

2.-Diseño: requisitos generales y precisos de la arquitectura de la aplicación.

3.-Programación  o desarrollo (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.

4.- Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.

5.- Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.

6.- Implementación: es la puesta en marcha del sistema

7.-Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

Entre los modelos de desarrollo de software más conocidos se encuentran:

-Modelo de cascada
-Modelo incremental
-Modelo evolutivo
-Modelo en espiral

Entre otros

Fuentes: