Factores que impulsan el SL en Venezuela

¿Qué lo impulsa?
A mi modo de ver las oportunidades de negocio y las necesidad de productos y profesionales en el área que se han generado como consecuencia del decreto 3390. Claro este elemento fue un catalizador de un crecimiento que viene teniendo la tendencia de uso de SL a nivel mundial, por la evolución que ha venido teniendo e indudablemente por las bondades que ofrece.

La Profesora María Esther Remedios al respecto, compartió en mi comunidad de aprendizaje lo siguiente:

Motivos que impulsan el desarrollo del SL en Venezuela (decreto 3390 y otras consideraciones):
  • Incentivar y fortalecer la producción de bienes nacionales
  • Fortalecer la industria del SL nacional (desarrollo local)
  • Lograr la apertura social del SL
  • Lograr la independencia tecnológica e informática frente a las empresas multinacionales
  • Mayor seguridad al permitir ver el código fuente y a su vez tiene como consecuencia desarrollar muchos más productos.
  • Reducir costos
  • Fortalecer el capital humano en el área del SL
  • Economizar costos dejando de utilizar software propietario que implica una inversión significativa en pago de licencias.
  • Procurar la independencia tecnológica y garantizar la privacidad de los datos
  • Libertad de uso y distribución favorece el desarrollo de la Sociedad de la Información y el Conocimiento.
  • Fomento de la libre competencia al basarse en servicios y no licencias
  • Corrección más rápida y eficiente de errores
  • Democratización del Conocimiento
¿Qué le falta?
Información, capacitación y promoción indudablemente. Pero manejado desde lo que ofrece el SL como tendencia tecnológica sin desviarse de lo que realmente es.

La Profesora María Esther Remedios también nos indica, que entre las lecciones aprendidas en este tema encontramos lo siguiente:
  • Los cambios importantes no se imponen, se aceptan.
  • La integración del área académica, laboral y gubernamental, potencia el desarrollo del SL
  • Implica cambios de paradigmas: depender del proveedor vs. resolver mediante la investigación, indagación y participación en las soluciones.
  • Requiere estrategias de información, capacitación, divulgación y promoción.
  • Necesita incrementar la confianza a través del fortalecimiento de sus proveedores, soluciones informáticas y mecanismos de soporte.

Afirmaciones, mitos y opiniones

En el mundo del software libre existen opiniones, afirmaciones y hasta mitos que vale la pena aterrizar, con la intención de tener una base de conocimiento mejor fundamentada.

Los siguientes planteamientos, son frases comunes en este ámbito y al respecto les doy mi opinión:
  1. Es más económico que el software propietario.Depende del punto de vista que se vea, es posible que visto desde la perspectiva de costo de licencias (productos) vs cantidad de equipos que pueden usarla resulte ser más económica pero ese no es el único punto a evaluar cuando de software se trata, esa es solo una arista del tema. 
  2. La libertad de uso y distribución favorece el desarrollo. 
    Esto es totalmente cierto, la prueba está en la cantidad y calidad de software que se produce en las comunidades de SL y de la evolución que estos han tenido desde que sus inicios hasta el día de hoy. 
  3. El SL asegura la independencia tecnológica y la eliminación del monopolio del fabricante del software. El SL propone una alternativa diferente a los usuarios, y creo que cada día los monopolios tal y como se conocen hoy mermaran, estamos viendo la era del conocimiento y sobre este los limites irán desapareciendo. 
  4. El SL fomenta la libre competencia al basarse en servicios y no licencias.Bueno creo que la libre competencia existe en todo tipo de negocios siempre y cuando se desarrollen en países cuyas leyes lo permitan, hoy en día nadie está obligado a comprar licencias propietarias sino no lo desea. 
  5. El SL no tiene soporte y existen problemas de compatibilidad.
    Quizás en algún momento pasado esto fue así, pero esta afirmación hoy día es más un mito que una realidad. 
  6. Garantiza privacidad y seguridad de los datos, no más virus.
    Según tengo entendido los SO basados en SL son mucho menos vulnerables a código malicioso, pero no me atrevería a decir que no ha existido ningún caso por allí. 
  7. Corrección más rápida y eficiente de errores.
    Bueno mucho ya hemos conversado de los métodos de desarrollo que se utilizan en el SL por medio de las comunidades de usuarios que prueban desde los primeros momentos el software y sobre eso va evolucionando y solucionándose los problemas, ha resultado ser una forma efectiva de corregir y hacer que evolucione el desarrollo y el producto.
  8. El Software Libre es un proyecto político.
    Estamos hablando de tecnología y de un movimiento basado en unos valores de solidaridad que fomentan el conocimiento, no tiene nada que ver con proyectos políticos aunque muchos intenten ponerle esa tinta y utilizarlo a favor de ciertas ideologías. El matiz político lo han utilizado tanto los detractores para atacar el movimiento como algunos a favor desvirtuándolo de su sentido original.  

Aspectos legales y derechos de autor… discusión retomada

De manera ordinaria y mundialmente aceptada, se tiene que los programas de Computación o de ordenador, también denominados Soporte lógico (Software), son creaciones protegidas por la propiedad Intelectual, y de manera más precisa por la disciplina del Derecho de Autor, en los mismos términos de las obras del dominio literario (Creaciones expresadas a través de letras, signos o convenciones).

Es decir que los autores y titulares de derechos sobre programas de ordenador o soporte lógico (software), denominados también titulares de derechos sobre Software Propietario, encuentran en la disciplina autoral el sustento legal y positivo para hacer valer sus derechos frente a terceros. Las facultades, derechos patrimoniales y condiciones de uso, comercialización, modificación y redistribución  dadas a los usuarios por el titular del software propietario, ordinariamente se establecen y limitan en la licencia o autorización de uso.

Durante muchos años, particularmente durante las décadas de los 70`s y 80`s, se discutió la alternativa por medio de la cual debía ser protegido el Soporte Lógico (Software). Se planteo la posibilidad de su protección vía un régimen Sui generis o especial; vía Propiedad Industrial, a través de instituciones como la de las Patentes de Invención o de modelo de utilidad para productos o procedimientos; Informaciones Confidenciales (Secreto Empresarial).

Pero realmente la idea de la patentabilidad del Software a nivel mundial había sido descartada, estableciendo las normas del Derecho de Autor como la alternativa de protección para estos casos.

Actualmente,  está cambiando totalmente la tendencia y se vuelve a abrir una discusión de vieja data; la Unión Europea ha mostrado su interés y disposición en admitir las patentes para invenciones implementadas por ordenador y de software, acercándose bastante al sistema de patentes sobre software que hoy rige en los Estados Unidos de Norteamérica y Japón. En efecto, la Dirección General para el Mercado Interno de la Comisión Europea ha publicado y presentado en febrero de 2002, una propuesta de Directiva Europea, donde se propone la admisión de las patentes sobre creaciones (Productos o procedimientos) realizados o implementados a través de programas informáticos. (Propuesta para una Directiva del Parlamento Europeo y el Consejo en la Patentabilidad de Invenciones Implementadas por Computador).
        
Al respecto EUROLINUX ha opinado que la propuesta de Directiva Europea mencionada, no tiene en cuenta e ignora estudios e informes presentados por Países como Francia y Alemania que evidencias el efecto nocivo que tendrían las patentes sobre software frente a la innovación y los avances tecnológicos, pues se permitiría inclusive patentar programas producto.  

Algunos sectores de la doctrina y de la industria del Software, como por ejemplo la Alianza Eurolinux, han calificado este cambio de tendencia hacia el régimen de patentes, como una reacción de los productores de software propietario, frente al movimiento que hoy propende por el establecimiento de sistemas de código abierto (open source) y el software libre. Otros por el contrario, afirman que la patentabilidad de las invenciones implementadas por ordenador, permiten un avance y mejor desarrollo tecnológico, por cuanto el escrito de reivindicaciones una vez publicada la solicitud, permite la divulgación, consulta y conocimiento del producto o procedimiento patentable.

Tal y como afirma la profesora María Esther Remedios al respecto de este tema, una lectura que se le puede dar a todo esto apunta a que deben coexistir diversas alternativas de protección y licenciamiento, donde organizaciones públicas y privadas (con y sin fines de lucro), desarrolladores de software, usuarios y la comunidad en general, dispongan de opciones que le brinden los mayores beneficios posibles.

La base legal debe promover una industria del software que impulse la soberanía del estado, la innovación y el desarrollo de la sociedad, propiciando relaciones “ganar-ganar” entre los protagonistas.

Tipos de licencias de software libre

Para analizar algunos términos relacionados al licenciamiento del Software Libre, es necesario aclarar que Software Libre o Free Software es un software disponible para cualquiera que desee utilizarlo, copiarlo y distribuirlo, ya sea en su forma original o con modificaciones como ya hemos mencionado en entradas anteriores. La posibilidad de modificaciones implica que el código fuente está disponible. Si un programa es libre, puede ser potencialmente incluido en un sistema operativo también libre. Es importante no confundir software libre con software gratis, porque la libertad asociada al software libre de copiar, modificar y redistribuir, no significa gratuidad.

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 variedad 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.

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.

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.

Fuente:
http://www.informatica-hoy.com.ar/software-libre-gnu/Tipos-de-licencia-de-Software.php

Herramientas para modelar UML

Son muchas las herramientas llamadas CASE que apoyan el modelado bajo las reglas que dicta UML en sus diversas versiones, tanto privativas como libres, como el tema que nos ocupa ahora es el de software libre, hubo una compañera de mi comunidad de aprendizaje que compartió con nosotros un link en donde comparan diferentes herramientas de este tipo y ahora se los comparto también por acá. http://www.diatel.upm.es/malvarez/UML/Comparativa.html

Reflexionando acerca de UML y algo más

Hay quienes opinan que la notación UML no sirve para nada, hay quienes dicen que su propósito es netamente comercial y que por ello fue creada, otros opinan que es muy pesada e inútil, en fin las criticas son diversas así como también las opiniones favorable, estuve revisando la argumentación de algunas personas en internet y contrastándolas con mi experiencia profesional y la opinión de muchos de mis compañeros en mi comunidad de aprendizaje llegue a la conclusión de que en primer lugar no podemos perder de vista que en esta área de conocimiento (sistemas de información, ingeniería de software, computación, informática…) aún no existe nada perfecto y que se ajuste a los gustos, preferencias o paradigmas de todos, es sumamente complicado complacer a todo el mundo; lo que sí es posible, es conciliar para estandarizar y utilizar lo mejor que se ofrece en este campo. Con esto lo quiero decir es que aún no existe la panacea que viene a resolver todos nuestros problemas o necesidades, pero que hay muchas cosas que son valiosas y ampliamente utilizadas y que para comunicarnos efectivamente es conveniente utilizarlas lo mejor posible.

Si hay algo que no se ajusta a tus necesidades, quizás una combinación de elementos te puede ayudar a expresar mejor la idea y si aún así no es suficiente, siempre se puede proponer algo mejor. Generalmente en esta área somos lo suficientemente flexibles para aceptar cosas que nos apoyen de forma efectiva en nuestro trabajo y que sea tan sencillo de entender como lo es nuestra capacidad de abstracción (propia de los profesionales de esta área).

Hablemos de UML

El lenguaje unificado de diagrama o notación (UML) sirve para especificar, visualizar y documentar esquemas de sistemas de software orientado a objetos. UML no es un método de desarrollo, lo que significa que no sirve para determinar qué hacer en primer lugar o cómo diseñar el sistema, sino que simplemente le ayuda a visualizar el diseño y a hacerlo más accesible para otros.

Esta notación es un estándar para modelar sistemas, desde diferentes vistas o niveles de abstracción, que pueden ir desde la definición del problema (casos de uso), la vista lógica (clases, objetos), la vista de procesos (comportamiento), implementación y hasta distribución. Es tan amplia que incluso ayuda a entender procesos de negocio complejos, lo cual lo convierte en una buena herramienta de comunicación entre las diferentes capas, participantes y clientes de un proyecto

UML se compone de muchos elementos de esquematización que representan las diferentes partes de un sistema de software. Los elementos UML se utilizan para crear diagramas, que representa alguna parte o punto de vista del sistema. En UML existen cinco vistas que permiten, visualizar, especificar, construir y documentar la arquitectura del software. UML permite representar cada vista mediante un conjunto de diagramas. Tal y como se describe a continuación:

Vista de caso de uso: muestra la funcionalidad del sistema desde el punto de vista de un actor externo que interactúa con él. Esta vista es útil a clientes, diseñadores y desarrolladores.
Vista de diseño: muestra la funcionalidad del diseño dentro del sistema en términos de la estructura estática y comportamiento dinámico del sistema. Esta vista es útil a diseñadores y desarrolladores.
Vista de procesos: muestra la concurrencia del sistema, comunicación y sincronización. Útil a desarrolladores e integradores.
Vista de implementación: muestra la organización de los componentes de código. Útil a los desarrolladores.
Vista de implantación o despliegue: muestra la implantación del sistema en la arquitectura física. Útil a desarrolladores, integradores y verificadores.

Los diagramas que pertenecen a cada una de las vistas descritas, se aprecian en la siguiente imagen:


Mapa mental de ingeniería de software. versión 2

Como recordaran en una nota anterior publique un mapa mental acerca de la ingeniería de software y el software libre, resulta que luego de que elabore ese mapa estuve estudiando otros temas que se relacionaban y como resultado se nutrió ese primer mapa y quedo mucho más interesante, quizás este trabajo sea de utilidad para ustedes y puedan enriquecerlo aun mucho más, si lo hacen por favor recuerden compartirlo…

Elaborado por: Yenny Andrade

¿Se certifica la calidad de software?

Leyendo acerca de lo que significa certificar la calidad de software, encontré varias cosas que vale la pena compartir en este espacio.
 
En principio tener claro que la calidad de software no se certifica, lo que se certifica son los procedimientos para construir un software de calidad, los procedimientos deben ser correctos y estar en función de normas reconocidas (ISO 9000, CMMI,...).

Por tanto, un sistema de certificación de calidad permite una valoración independiente que debe demostrar que la organización es capaz de desarrollar productos y servicios de calidad.

Entre los pilares básicos de la certificación de calidad, se encuentran:
  • Una metodología adecuada
  • Un medio de valoración de la metodología
  • La metodología utilizada y el medio de valoración de la metodología deben estar reconocidos ampliamente por la industria.
Dependiendo de la norma que se escoja para optar a la certificación de la misma, la organización deberá demostrar que cumple los requisitos específicos de la misma, las certificaciones no son eternas, serán revisadas con periodicidad para determinar si se mantiene la certificación.

Lo interesante de las certificaciones para las empresas que desarrollan software es que tienen un aval ante sus clientes de que sus procedimientos y métodos están reconocidos por contribuir a que la elaboración de los productos sea de calidad. Cuando una empresa está certificada con alguna norma de calidad, suele ser más costosos sus servicios.

Factores que determinan la calidad del software

Se clasifican en tres grupos:

  1. Operaciones del producto: se refieren a las características operativas, considerando básicamente los siguientes aspectos: Corrección (¿Hace lo que se le pide?),  Fiabilidad (¿Lo hace de forma fiable todo el tiempo?), Eficiencia (¿Qué recursos hardware y software necesito?),  Integridad (¿Puedo controlar su uso?) y  Facilidad de uso (¿Es fácil y cómodo de manejar?).
  2. Revisión del producto: capacidad para soportar cambios, considerando básicamente los siguientes aspectos: Facilidad de mantenimiento (¿Puedo localizar los fallos?),  Flexibilidad (¿Puedo añadir nuevas opciones?),  Facilidad de prueba (¿Puedo probar todas las opciones?).
  3. Transición del producto: adaptabilidad a nuevos entornos, , considerando básicamente los siguientes aspectos: Portabilidad (¿Podré usarlo en otra máquina?),  Reusabilidad (¿Podré utilizar alguna parte del software en otra aplicación?), Interoperabilidad (¿Podrá comunicarse con otras aplicaciones o sistemas informáticos?)
Fuente: Conferencia de Calidad del Software de Juan Manuel Cueva Lovelle, Departamento de informática de la Universidad de Oviedo,  España.

¿Qué significa calidad de software?

Según  R. S. Pressman (1992), es la concordancia con los requisitos 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 espera de todo software desarrollado profesionalmente.

A propósito de esto es importante tener en cuenta lo siguiente:
  • Los requisitos del software son la base de las medidas de calidad. La falta de concordancia con los requisitos es una falta de calidad.
  •  Los estándares o metodologías definen un conjunto de criterios de desarrollo que guían la forma en que se aplica la ingeniería del software. Si no se sigue ninguna metodología siempre habrá falta de calidad.
  • Existen algunos requisitos implícitos o expectativas que a menudo no se mencionan, o se mencionan de forma incompleta (por ejemplo el deseo de un buen mantenimiento) que también pueden implicar una falta de calidad.
No he tenido la oportunidad de participar de lleno en esta fase del desarrollo de software (Calidad), lo que me indica la experiencia es que su existencia y buen funcionamiento determinará el éxito de los proyectos y su vigencia en el tiempo.
En la medida que se hagan las verificaciones necesarias, en aspectos diversos como, la forma, técnica, funcionamiento y cumplimiento de requerimientos, es la medida en la que el software responderá efectivamente a su propósito original.

En mi opinión es una unidad crítica de éxito y que no debe ser omitida, ni puesta en un segundo plano bajo ninguna circunstancia.

Con información tomada de la Conferencia de Calidad del Software de Juan Manuel Cueva Lovelle, Departamento de informática de la Universidad de Oviedo,  España.

Principios de XP

Quise compartir en este espacio las reflexiones de unas compañeras de mi comunidad de aprendizaje Dahyna Guzmán y nuestra profesora María Esther Remedios.

Se plantea el tema de XP y el software libre, en donde se comienza exponiendo que XP está centrada en 4 valores principales:

1. Comunicación: Los desarrolladores necesitan intercambiar información e ideas sobre el proyecto, a los directivos, y a los clientes de manera confiable. La información debe fluir continua y rápidamente.
2. Sencillez: Siempre que sea posible hay que elegir soluciones simples. Esto no significa estar equivocado o aplicar enfoques simplistas. Beck utiliza a menudo el siguiente aforismo " simple pero no demasiado simple".
3. Retroalimentación: En todos los niveles las personas deberían obtener una retroalimentación muy rápida sobre lo que hacen. Los clientes, los directivos y los desarrolladores tienen que alcanzar una comprensión común de la meta del proyecto, y también acerca del estado actual del proyecto, sobre qué necesitan realmente los clientes en primer lugar primero y sobre sus prioridades, y qué desarrolladores pueden hacerlo y en que tiempo.
4. Valor: Cada persona implicada en el proyecto debería de tener el valor (y el derecho) de expresar su valoración sobre el proyecto. Todos deberían ser abiertos y dejar que todos examinasen e incluso modificasen su trabajo.

Al respecto es importante tomar en cuenta lo siguiente, según la apreciación de la Prof. María E. y la cual comparto:

  • La comunicación es un tema muy complejo, por algo existen ciencias, carreras, postgrados y doctorados en comunicación social.
  • La sencillez es una percepción que la mayoría de las veces tiene que ver con el dominio que se tiene sobre el tema y la facilidad de presentación.
  • La retroalimentación y la valoración son claves en la producción del SL, por lo tanto despertar y mantener el interés es otro de los grandes retos.
Resulta que llevar a cabo estos principios no es solo creer que se hace lo que dice una receta, o un conjunto de principios, es que se debe saber lo que significa e implica cada uno de estos, ser efectivos en la implementación y conocer las dificultades que implica llevarlo a cabo, para lograr la mayor efectividad posible.


La relación entre XP y el software libre, es planteada de esta forma en un trabajo publicado en  Monografias.com - Agilidad y desarrollo de Software Libre, que lo resume de la siguiente forma (ver imagén)

Enfoques metodológicos

Desarrollar un software de calidad depende de muchas etapas y actividades, donde juega un papel fundamental para el éxito del producto, elegir la metodología que mejor se adapte a las particularidades del proyecto y del equipo que lo llevara a cabo. El rol fundamental de las metodologías es dar un patrón que permita guiar las etapas y actividades necesarias para encaminar de forma correcta cualquier proyecto de este tipo minimizando de alguna manera los factores que pueden llevar al fracaso los proyectos y por consecuencia los productos.

Existen dos grandes enfoques en lo que respecta a las metodologías de desarrollo, el tradicional y el ágil, el primero pensado en una serie de pasos y etapas que generan el uso exhaustivo de documentación durante todo el ciclo del proyecto mientras que el segundo ponen vital importancia en la capacidad de respuesta a los cambios, la confianza en las habilidades del equipo y al mantener una buena relación con el cliente.
Entre las principales metodologías tradicionales se tienen las conocidas RUP (RATIONAL UNIFIED PROCESS), MSF (MICROSOFT SOLUTION FRAMEWORK) entre otras, que centran su atención en llevar una documentación exhaustiva de todo el proyecto y en cumplir con un plan de proyecto, definido todo esto, en la fase inicial del desarrollo del proyecto. Una de las características importantes dentro de este enfoque es el alto costo de implementar un cambio y la de no ofrecer una buena solución para proyectos donde el  entorno es volátil.

Ahora bien el enfoque ágil, nace como respuesta a los problemas que presenta el enfoque tradicional, basándose en dos aspectos puntuales, el retrasar las decisiones y la planificación adaptativa; permitiendo potenciar aún  más el desarrollo de software a gran escala.
Como resultado de esta nueva teoría se crea un Manifiesto Ágil  cuyas principales ideas son:
  • Los individuos y las interacciones entre ellos son más importantes que las herramientas y los procesos empleados.
  • Es más importante crear un producto software que funcione que escribir documentación exhaustiva. 
  • La colaboración con el cliente debe prevalecer sobre la negociación de contratos.
  • La capacidad de respuesta ante un cambio es más importante que el seguimiento estricto de un plan.
Entre los principales métodos ágiles tenemos el XP (eXtreme Programming), Scrum, Iconix, Cristal Methods, AUP entre otras.

Estas metodologías ponen de relevancia que la capacidad de respuesta a un cambio es más importante que el seguimiento estricto de un plan. Nos lo proponen porque para muchos clientes esta flexibilidad será una ventaja competitiva y porque estar preparados para el cambio significar reducir su costo. Estas metodologías son las que mejor se adaptan a los proyectos de software libre, donde lo dinámico prevalece durante todo el proceso. 

Más allá de lo diverso que puedan llegar a ser todos estos nuevos enfoques metodológicos, lo importante es entenderlos y conocer qué nos pueden aportar a nuestro proyecto, para aplicarlos en esas fases o procesos en los que nuestro equipo o nuestros usuarios estén más cómodos con ello, y no al revés. Las metodologías se deben adaptar a nuestras necesidades y no tratar de que nuestra situación encaje en una metodología establecida, es válido hacer las combinaciones necesarias, de forma congruente, para que sea un apoyo real al proyecto.

Elaborado con información del artículo, METODOLOGÍAS TRADICIONALES  VS. METODOLOGÍAS ÁGILES de Roberth G. Figueroa , Camilo J. Solís y Armando A. Cabrera.

Mapa mental acerca de la ingeniería del software vs software libre

Ya que estas disciplinas están muy vinculadas y que resulta importante estudiar sus relaciones he aquí un mapa mental que elaboré como parte de mi proceso de aprendizaje para mi comunidad académica y muestra de forma gráfica y precisa definiciones y elementos relevantes al respecto. Espero que les sea de utilidad.

Mapa mental elaborado por Yenny Andrade.

La ingeniería del software y el software libre

La ingeniería de software ha proporcionado al mundo de desarrollo de software, un modelo a seguir para obtener de forma disciplinada productos de software de calidad.
La necesidad de que existiese esta disciplina se presento porque el mundo de desarrollo de software creció rápidamente y los proyectos fracasaban, consumían mucho más tiempo del que se estimaba originalmente, rebasaban los presupuestos, al terminar no resolvían la situación o los requerimientos reales, entre otras cosas; al surgir la ingeniería de software y con ella diversos paradigmas o metodologías que de alguna manera proponen un orden en el proceso, para garantizar de una forma menos empírica el desarrollo y aumentar así las probabilidades de éxito.

Ahora bien en los proyectos de software libre el reto es aún mayor, se requiere de mucha más disciplina, de que todo este mucho más claro y engranado para asegurar el éxito de los proyectos, ya que el equipo de desarrollo trabaja distribuido alrededor del mundo y el trabajo es netamente colaborativo, nadie debe invertir mucho tiempo en comprender como es que funciona la cosa, sino que por el contrario se dedique a producir y colaborar, por lo que se requiere entonces de mecanismos dinámicos fáciles de aplicar y de entender.
Comparto la idea de que uno de los elementos distintivos en SL es la creación, desempeño y evolución de los equipos de trabajo que se conforman alrededor de estas comunidades, así como la forma cómo manejan el liderazgo, la motivación y el reconocimiento. Un fenómeno que va más allá de lo técnico, que como ya hemos conversado antes, tiene que ver con lo social y filosófico.

La ingeniería del software permite crear un orden dentro de un desarrollo de software libre, permite definir una metodología, herramientas y técnicas que se ajusten al proyecto. Va a lograr que se mida la calidad del desarrollo de forma ordenada, logra que las personas que colaboren dentro del proyecto puedan comprender cuál es su rol y como alcanzar el objetivo final.

Para gestionar cualquier proyecto incluso de software libre, entre los factores a tener en cuenta se encuentran:
1.- Cumplir con los plazos de entrega.
2.- Lograr la entrega completa según la definición inicial del proyecto.
3.- El proyecto debe servir para lo que se acordó y tiene la calidad esperada.
4.- Se cumplen las expectativas del proyecto se han cumplido.
5.- El beneficio establecido para el proyecto se ha alcanzado.

Aportes de la ingeniería de software al SL

Entre los grandes aportes de la ingeniería de software al movimiento del Software Libre (SL), es precisamente la forma de hacer las cosas, mejor dicho de hacer que el software se haga de la mejor forma posible, lo que algunos llaman metodologías, bastante útiles en cualquier proyecto.

Uno de los aspectos más importantes para las comunidades de desarrollo de software libre es que las piezas funcionen de forma engranada y disponer de la información que sea necesaria para hacer los aportes que la comunidad necesita. El seguimiento de proyectos en las comunidades de SL, está basado en hacer las cosas lo más organizadamente posible, de forma que sus desarrollos no sean incompatibles y que se trabaje como lo han acordado hacer. El secreto está en una comunicación eficaz  y en el espíritu de colaboración que es indispensable. Se requiere de líderes que organicen el trabajo, que no intenten imponerse (prevalece la colaboración), que sepa delegar a la comunidad que les acompaña el trabajo requerido, así como hacer que estos permanezcan acompañándole.

El medio que utilizan para establecer su comunicación es Internet, pero a través de plataformas que soportan el trabajo colaborativo, en el caso de la comunidad de desarrolladores de Debían, uno de sus más importantes recursos es CPAN (Comprehensive Perl Archive Network), que además de ofrecer herramientas para el desarrollo y seguimiento colaborativo, también ofrecen un sistema de seguimiento de fallos, y un sistema de organización, búsqueda y consulta de la documentación de los módulos que lo conforman. Además cuentan con una herramienta (script) que les permite  comparar el estado de los módulos en CPAN, los paquetes en el depósito Subversión, los reportes en el sistema de seguimiento de Debían, y los paquetes publicados en la distribución misma de Debían. La comunidad manifiesta que hoy en día, este script es su principal herramienta de seguimiento, brindándoles un reporte de estado condensado y adecuado específicamente a su flujo de trabajo. Mayor información en: http://gwolf.org/soft/coord_desarrollo_integracion_sl 

En la comunidad de Ubuntu se utiliza la plataforma colaborativa Launchpad, para conectar a su comunidad y darle seguimiento a sus proyectos. La apuesta de Ubuntu en Launchpad se basa en la creencia de que no sólo el software libre debe ser accesible y de fácil uso a los usuarios corrientes, sino que también los canales de colaboración y desarrollo deben tener pasarelas accesibles a los usuarios que, aun sin tener habilidades informáticas, deseen colaborar. Launchpad, cuenta con herramientas tales como: canalizador de soporte, canalizador de bounties, gestor de planificación de proyectos de software libre, agenda de actividades personalizada basada en la recopilación de actividades de los equipos y proyectos en los que el usuario está implicado, herramienta de traducción de software libre vía web, gestor de incidencias, entre otros nuevos desarrollos. Para mayor información visitar: http://doc.ubuntu-es.org/Launchpad 

En cualquier comunidad de software libre se han de encontrar las herramientas, los procesos y métodos que le permiten sacar adelante sus proyectos de la mano de sus participantes. La colaboración aunque fundamental no es lo único que hace falta…

Empresas de capital surgidas del SL

De las comunidades de software libre han surgido negocios bastantes exitosos y enfocados en la rentabilidad, un elemento tan cuestionada por algunos en este entorno y resulta que aún basados en Software Libre las oportunidades de negocio están allí presentes y no son para nada despreciables, en torno a todo esta mezcla de motivaciones sociales y económicas es que ha evolucionado el movimiento de Software libre. La prof. María Esther Remedios compartio en nuestra comunidad de aprendizaje una reflexión que me pareció muy acertada y  la comparto con ustedes:

"La inteligencia social tiene que ver con nuestra capacidad para crear y mantener relaciones asertivas, y claro está incluye relaciones laborales, profesionales y productivas. En todo caso, las nuevas "empresas" surgidas de las iniciativas de SL, como por ejemplo Google o Facebook, no provienen de consorcios empresariales, y hoy día tampoco se puede negar que se han convertido en empresas capitalistas que han visto en la inversión social una oportunidad de negocio.

El SL tiene para algunos matices políticos e ideológicos, para otros un trasfondo principalmente social, hay quienes han destacado en el SL sus competencias tecnológicas, y quienes han aprovechado las oportunidades de negocio que este ofrece; todo esto contribuyendo, desde diferentes perspectivas, a la difusión, desarrollo y evolución del SL."

Lo interesante es que la diversidad de opiniones y enfoques que envuelven este movimiento, respetando las libertades que definen el SL es lo que ha permitido el impulso del movimiento, apoyado en tecnologías como la web 2.0 que ha facilitado las comunicaciones y fortalecido las relaciones de los participantes de las comunidades de SL.

¿Qué opinión tienen ustedes al respecto?

Software Libre, socialismo, capitalismo....??

Al respecto de este tema en mi comunidad de aprendizaje se formulo un debate intenso, al plantearse una idea que sondeaba nuestra opinión acerca de si el movimiento del software libre (SL) pudiese ser enmarcado en contextos políticos como el capitalismo y el socialismo.

Para comenzar es importante tener claro que el SL es cuestión de libertad y de derechos: el derecho libre al uso, al conocimiento y a la libre distribución. Y por otro lado es cierto que algunos tratan de etiquetar o vincular el movimiento del SL con el socialismo o con el capitalismo, unos dicen que es apolítico y otros que no lo puede ser. En fin les voy a contar mi opinión al respecto, yo creo firmemente que
aunque los fundamentos del movimiento de software libre estén sostenidos en principios de índole social, que visto desde un punto de vista político pudiese tener alguna relación con tendencias socialistas, no me parece correcto enmarcarlo en contextos políticos, más allá de eso estamos hablando de tecnología y conocimiento que hoy día son de alcance global, sin importar los sistemas políticos, representando una ventaja competitiva y tecnológica.


A propósito de este tema, consultando en la web me encontré un artículo del señor Julián Coccia quien dice lo siguiente:

“El amplio crecimiento y adopción global de los principales proyectos de software libre, llevaron a que más allá de los ideales políticos, el software libre represente hoy interesantísimos motivos tecnológicos, estratégicos, y económicos que impulsan su evolución. Participar en la comunidad del software libre, ya no solo se trata de una acción altruista, sino que además representa grandes beneficios económicos, únicas oportunidades estratégicas, y amplias ventajas tecnológicas”

http://blog.julian.coccia.com/2008/07/no-la-dependencia-poltica-del-software.html

Es Cuestión de Libertad, no de precio...

En mis primeros pasos en este tema, por supuesto que he de abordar los conceptos fundamentales de lo que es el Software Libre, y la reflexión más importante del tema es precisamente como se titula esta entrada, resulta ser que hay un mito alrededor de este concepto que hay que aclarar, no es lo mismo hablar de software libre que hablar de software gratis, cuando se habla de uno no necesariamente estás hablando del otro. Según Richard Stallman en su libro titulado “Software libre para una sociedad libre”, Un programa es software libre para el usuario siempre que, como usuario particular, tengas:

  1. La libertad de ejecutar el programa sea cual sea el propósito.
  2. La libertad para modificar el programa para ajustarlo a tus necesidades. (Para que se trate de una libertad efectiva en la práctica, deberás tener acceso al código fuente, dado que sin él la tarea de incorporar cambios en un programa es extremadamente difícil.)
  3. La libertad de redistribuir copias, ya sea de forma gratuita, ya sea a cambio del pago de un precio.
  4. La libertad de distribuir versiones modificadas del programa, de tal forma que la comunidad pueda aprovechar las mejora introducidas.
Dado que en el concepto nos referimos a la libertad y no al precio, no existe contradicción alguna entre la venta de copias y el software libre. De hecho he allí una de las formas en las que se puede llegar a financiar los desarrollos en software libre.


En 1984 Richard Stallman comienza a trabajar en el proyecto GNU, el cual marca el inicio de todo este movimiento, un año después (1985) funda junto con otros entusiastas del software libre La Free Software Foundation (FSF) o en español, fundación para el software libre, es una organización creada con el propósito de difundir este movimiento. En sus inicios, la FSF destinaba sus fondos principalmente a contratar programadores para que escribiesen software libre. A partir de mediados de la década de 1990 existen ya muchas compañías y autores individuales que escriben software libre, por ello los empleados y voluntarios de la FSF han centrado su trabajo fundamentalmente en asuntos legales, organizativos y promocionales en beneficio de la comunidad de usuarios de software libre.

Dentro de la comunidad no todos comparten plenamente la filosofía o actuaciones de la FSF siendo la Open Source Initiative (OSI) la principal línea de pensamiento alternativa a la FSF, esta se crea en 1998, la cual decidió adoptar el término open source software (‘software de fuente abierta’) como una marca para introducir el software libre en el mundo comercial, tratando de evitar la ambigüedad que en inglés supone el término free (que significa tanto ‘libre’ como ‘gratis’). Esta decisión genera uno de los debates más polémicos del mundo del software libre, ya que la Free Software Foundation (FSF) y otros consideraron que era mucho más apropiado hablar de software libre.
Desde el punto de vista práctico, casi cualquier programa que es considerado software libre es también considerado open source, y viceversa. Sin embargo, las comunidades del software libre y del software de fuente abierta (o al menos las personas que se identifican como parte de una o de otra) pueden ser profundamente diferentes.

En el mundo del software libre se identifican diversas motivaciones para su desarrollo, tales como:

La motivación ética, abanderada por la Free Software Foundation, heredera de la cultura hacker, y partidaria del apelativo libre, que argumenta que el software es conocimiento que debe poder difundirse sin trabas, y que su ocultación es una actitud antisocial y que la posibilidad de modificar programas es una forma de libertad de expresión.  
La motivación pragmática, abanderada por la Open Source Initiative y partidaria del apelativo fuente abierta, que argumenta ventajas técnicas y económicas.
Aparte de estas dos grandes motivaciones, la gente que trabaja en software libre puede hacerlo por muchas otras razones, que van desde la diversión hasta la retribución económica, posiblemente debido a modelos de negocio sustentables, como los que están presente en la distribución, desarrollos a la medida y el soporte.

Partiendo de todos estos conceptos, antecedentes y polémica hay muchos más que abordar para comprender los fundamentos de este tema, para lo cual se elaboro un mapa conceptual que permite ver en un esquema los conceptos claves a tener en cuenta para comenzar a estudiar esta disciplina.

Una elección moral radical

Hace unos días estuve leyendo un libro llamado Software libre para una sociedad libre de Richard Stallman (http://biblioweb.sindominio.net/pensamiento/softlibre/index.html), el cual está formado por un amplio conjunto de ensayos y artículos que recorren la década de los 90 y los primeros años del 2000, y que conforman quizás la mejor apología escrita del software libre, según reza la presentación de la edición. De verdad me pareció una lectura agradable, llena de un espíritu de ética que es poco común encontrar en tratados de tecnología o en alguna literatura corriente, además de la explicación profunda del sentido, origen, conceptualización y contexto del movimiento, muy convincente y sencilla, encontré algo que realmente me impacto en uno de sus apartados llamado Una elección moral radical, en los primeros párrafos dice lo siguiente:

“Una vez desapareció mi comunidad, era imposible seguir como hasta entonces. De modo que me enfrenté a un dilema moral radical.
Lo más fácil hubiera sido subirme al tren del software propietario, firmar acuerdos de confidencialidad y prometer no ayudar a mis compañeros hackers. Es muy probable que ahora me dedicara a desarrollar software publicado con cláusulas de confidencialidad, presionando así a otros para traicionar también a sus compañeros.
Podría haber ganado mucho dinero de esta forma, y quizás me hubiera divertido escribiendo código. Pero sabía que, al final de mi carrera, echaría la vista atrás y sólo habría contribuido a levantar muros para dividir a la gente, habría pasado toda mi vida convirtiendo este mundo en un lugar mucho peor.” (Richard Stallman)

Al leer esto me di cuenta de lo fuerte de la convicción del Sr. Stallman y de lo trascendente de la decisión que tomó hace ya bastante tiempo, y que hoy mantiene con firmeza, no participar en levantar muros alrededor del software y por el contrario promover la libertad de éste, cosa que me pareció digna de admiración, porque aun cuando contaba con los contactos, el talento y las posibilidades de hacer dinero siguiendo el rumbo que marcaba la industria, prefirió apegarse a su convicción moral. No todas las personas son capaces de renunciar a una posibilidad de bienestar personal, y por el contrario apostar a una iniciativa que pudiese ser vista como altruista y que hasta ese momento no sabía si tendría éxito. No idealizo en lo absoluto a este señor pero su actitud frente aquellos acontecimientos y su visión de las cosas, han dado origen a un movimiento que tiene actualmente una transcendencia mundial importantísima y que va en aumento, El Movimiento del Software Libre.

posted under , | 0 Comments
Entradas más recientes Entradas antiguas Página Principal


Seguidores


Este es un blog dedicado a recopilar mis lecciones aprendidas en este tema y compartirlas con todos ustedes... Bienvenidos!


Recent Comments