miércoles, 21 de abril de 2010

Reflexiones sobre el Desarrollo de SL

"Todo trabajo de software comienza a partir de las necesidades personales del programador. No es lo mismo trabajar para un proyecto a cambio de un salario que trabajar gratis en algo en lo que se encuentra una satisfacción personal o se cubre una necesidad. Lo segundo motiva más"


"Los buenos programadores saben escribir. Los mejores reescribir (y reutilizar). Es más fácil partir de una solución aunque sea incompleta y mala que de cero"


"Cuando se pierde el interés en un programa, el último deber es dejarlo en herencia a un sucesor competente"


"Tratar a los usuarios como colaboradores es la forma más apropiada de mejorar el código, y la más efectiva de depurarlo"


"Lo más grande después de tener buenas ideas es reconocer las buenas ideas de sus usuarios. Esto último es a veces lo mejor"


"Frecuentemente, las soluciones más innovadoras y espectaculares provienen de comprender que la concepción del problema era errónea"


"La perfección (en diseño) se alcanza no cuando ya no hay nada que agregar, sino cuando ya no hay algo que quitar"


"Toda herramienta es útil empleándose de la forma prevista, pero una ``gran'' herramienta es la que se presta a ser utilizada de la manera menos esperada"


"Para resolver un problema interesante, comience por encontrar un problema que le resulte interesante"

Metodología Ágil OpenUP

OpenUP es un FrameWork de procesos de desarrollo de software de código abierto. Es un proceso modelo y extensible, dirigido a gestión y desarrollo de proyectos de software basados en desarrollo iterativo, ágil e incremental; y es aplicable a un conjunto amplio de plataformas y aplicaciones de desarrollo.

Este proceso de desarrollo unificado está basado en Rational Unified Process (RUP), desarrollado por IBM.

OpenUP está caracterizado por cuatro principios básicos interrelacionados, a saber:

1.- Colaboración para unificar intereses y compartir conocimientos.
2.-Equilibrio de prioridades competentes a maximizar el valor de los involucrados con el resultado del proyecto.
3.-Enfoque en la articulación de la arquitectura.
4.-Desarrollo continuo para obtener realimentación y realizar las mejoras respectivas. OpenUP se centra en articular la arquitectura para facilitar la colaboración técnica, reducir el riesgo y minimizar el sobreesfuerzo de desarrollo.

OpenUP desarrolla un ciclo de vida interactivo que mitiga el riesgo a tiempo y ofrece demostrar resultados en curso al cliente del proyecto.


¿Cómo empezar con OpenUP?

El cuarto principio de OpenUP, “Desarrollo continuo para obtener realimentación y realizar las mejoras respectivas”, sugiere un abordaje iterativo e incremental para implementar OpenUP en las organizaciones de desarrollo de software. Para ello se sugieren las siguientes actividades:

* Comience comprendiendo los cuatro principios básicos que propone el proceso de desarrollo de software OpenUP.
* Luego evalúe y compare OpenUP con el proceso que se está utilizando en su organización y luego seleccione una o dos áreas del proceso que usted desee mejorar.
* Aplique OpenUP en esas áreas.
* En las últimas iteraciones del ciclo de desarrollo, realice una mejora incremental de las otras áreas del proceso adaptándolas a OpenUP.


Para más información revisa los siguientes enlaces:

Wikipedia http://es.wikipedia.org/wiki/OpenUP
Eclipse http://www.eclipse.org/epf/
Introducción a OpenUP http://epf.eclipse.org/wikis/openup/index.htm

Herramientas de Desarrollo Distribuido

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. Estos sistemas suelen registrar las interacciones con los desarrolladores y, por tanto, una vez que se consiguen estos registros puede monitorizarse de manera bastante sencilla todo el proceso de desarrollo. Uno de estos sistemas son los siguientes:


Sistema de control de versiones: cvstat2

El desarrollo distribuido (y a veces simultáneo) en proyectos de software libre se organiza mediante el uso de un sistema de control de versiones. El más utilizado en la actualidad por los proyectos de software libre es el CVS. Un análisis de los cambios que se van realizando al repositorio que estos sistemas mantienen, nos dará mucha información acerca de la participación de desarrolladores, además de la posibilidad de ver si existen ciclos de desarrollos. El estudio de los resultados obtenidos por esta vía se puede extender de manera notable si los datos obtenidos los podemos correlar con las inspecciones de código y la actividad en las listas de correo, así como con datos socio-laborales de los desarrolladores.

Cvstat2 es una extensión del cvstat de J.Mallet que ha sido concebido para poder funcionar de manera distribuida. El objetivo es que junto con la aplicación de extracción de datos, se distribuya un interfaz web simple e intuitiva a través de la cual se pueda ver la evolución del proyecto en el CVS. De esta manera, cualquier equipo de desarrollo podrá descargarse, instalarse y configurarse el software y medir sus interacciones con el repositorio CVS. Además, estos datos serán exportados, de manera que se descarga el procesamiento de un repostorio
central de datos en formato intermedio.

Datos que podemos obtener vía cvstat2:

Fecha del commit (acción por la cual un desarrollador sincroniza su versión local con la existente en el repositorio)
Fichero modificado
Desarrollador
Número de versión (CVS)
Número de líneas añadidas
Número de líneas borradas


Sistema de control de erratas: BugZilla, estadísticas de errores críticos


En muchos proyectos grandes de software libre, la existencia de errores críticos propicia que la publicación de una versión estable se retrase. Debian y GNOME son dos ejemplos de ello, aunque seguro que hay muchos más. La incidencia de errores críticos es muy importante a la hora de realizar la publicación definitiva en grandes proyectos de software libre. Un ejemplo de radiante actualidad nos lo ha dado la segunda versión de la plataforma GNOME. Su publicación definitiva se ha retrasado varias semanas, porque tenía varios errores críticos que no se había conseguido corregir.

Datos que se pueden extraer:

Fecha de apertura de una errata
Catalogación de una errata
Número de las interacciones
Fecha de las interacciones
Autor de las interacciones
Fecha de cierre de una errata



Fuente: http://curso-sobre.berlios.de/curso/trab/grex/sobre-trabajo-grex.pdf

Ingeniería de software libre (ISL)

La Ingeniería de software libre (ISL) nos permite que la Metodología para el desarrollo de aplicaciones se lleve a cabo de manera amplia, ya sea utilizando un enfoque estructurado de análisis y diseño, un enfoque orientado por objetos o algún otro tipo de paradigma; además no limita a los analistas y diseñadores a utilizar una técnica de modelado y diagramación, como UML o el modelado estructurado, ni ofrece recomendaciones que permitan evaluar el nivel de calidad de una organización.

Más bien La Ingeniería de software libre (ISL) se fundamenta en que se debe trabajar en equipo, con el fin de fomentar una mayor participación de elementos para el desarrollo óptimo de aplicaciones sin dejar de lado la utilización de técnicas y herramientas que se mencionaron anteriormente. Además, se debe tener en cuenta el tiempo y los recursos asignados para cumplir con las tareas involucradas, evitando la pérdida de tiempo o abandono de los proyectos. Con la ISL se pretende promover el uso de sistemas operativos, lenguajes de programación, bases de datos y demás herramientas de software de carácter libre para la creación de aplicaciones

Filosofia del Software Libre

Que transmiten los portales de Software Libre?

En forma general puedo decir que estos portales transmiten una forma de organización de la producción y distribución del conocimiento que puede estar basada en la propiedad común de la innovación mediante la colaboración libre y voluntaria ya sea de los creadores o de las personas interesadas en ayudar o fortalecer alguna aplicación.

Los portales de Software Libre se caracterizan por su sencillez, claridad, escasa publicidad, contenido directo y preciso, facilitando el acceso desde diferentes navegadores y dispositivos de comunicación.

Destacan entre sus propósitos: Promover y dar un concepto claro del movimiento Software Libre y sus beneficios, Conformar Comunidades, Promocionar el trabajo Cooperativo y Colaborativo, Defender los derechos y libertades de los usuarios y desarrolladores de software.

Entre los servicios que ofertan: Información, Documentación, Soporte, Noticias, Invitación a registrarse y formar parte del equipo de colaboradores, Dar a conocer los proyectos que se están desarrollando, Facilitar lista de compañías que ofrecen soporte, así como de colaboradores y grupos, También suelen incluir una sesión con las respuestas a preguntas frecuentes.


Fuente: Maria E. Remedios

Portales de Software Libre











Porque el Software no debe tener Propietario?

Esta pregunta es un poquito difícil de responder ya que existen muchísimos factores que pudieran estar en contra o a favor de que el software no tenga propietario, ya que hay personas que se beneficiarían y otras que las afectaría esta situación, así que estoy de acuerdo con lo que expresan un grupo de expertos de la comunidad de aprendizaje de que deberíamos realizar un análisis del tipo costo-beneficio en nombre de la sociedad como un todo, teniendo en cuenta la libertad individual así como la producción de bienes materiales.


Proyecto MONO
En el año 2001 se creó el Proyecto Mono, cuyo objetivo es la creación de un grupo de herramientas libres, basadas en GNU/Linux y compatibles con Microsoft.NET, este proyecto está siendo impulsado por Novell. Actualmente desarrollan código para los teléfonos Google Android y para el iPhone de Apple.

Stallman no está de acuerdo con este tipo de iniciativas, leer.
Opinión personal sobre el tema

Particularmente estoy de acuerdo a que desarrollen dichas herramientas en mi opinión personal ya que van hacer una alternativa más a tener en cuenta y que debemos evaluar por igual con sus ventajas y sus desventajas y si nos cubren algunas de nuestras necesidades, Adelante.

jueves, 8 de abril de 2010

Introducción al Software Libre





Terminos Relacionados Con Software Libre

Freeware


Son programas gratuitos. Normalmente se distribuyen sólo en binario, y se pueden obtener sin coste. A veces se consigue también permiso de redistribución, pero otras no, de manera que entonces sólo se pueden obtener del sitio "oficial" mantenido a ese efecto. Es habitual que se usen para promocionar otros programas (típicamente con funcionalidad más completa) o servicios. Ejemplos de este tipo de programas son Skype, Google Earth o Microsoft Messenger.



Shareware

No es siquiera software gratis, sino un método de distribución, ya que los programas, generalmente sin códigos fuente, se pueden copiar libremente, pero no usar continuadamente sin pagarlos. La exigencia de pago puede estar incentivada por funcionalidad limitada, mensajes molestos o una simple apelación a la moral del usuario. Además, las estipulaciones legales de la licencia podrían utilizarse en contra del infractor.


Charityware, Careware

Se trata generalmente de shareware cuyo pago se pide para una organización caritativa patrocinada. En muchos casos, el pago no se exige, pero se solicita una contribución voluntaria. Algún software libre, como Vim, solicita contribuciones voluntarias de este tipo (Brian Molenaar, "What is the context of charityware?")

Fuente: Molenaar, B. "What is the context of charityware?". http://www.moolenaar.n /Charityware.html


Dominio Público

El autor renuncia absolutamente a todos sus derechos en favor del común, lo cual tiene que quedar explícitamente declarado en el programa, ya que si no se dice nada, el programa es propietario y no se puede hacer nada con él. En este caso, y si además se proporcionan los códigos
fuente, el programa es libre.


Copyleft

Se trata de un caso particular de software libre cuya licencia obliga a que las modificaciones que se distribuyan sean también libres.


Propietario, Cerrado, No Libre

Se trata de términos usados para denominar al software que no es libre ni de fuente abierta.



Fuente: http://cv.uoc.edu/~fcaulas/20041/90.783/portada_Into.pdf

Reflexión sobre el Software Libre


El movimiento de software libre ejemplifica una forma de organización de la producción y la distribución en una economía del conocimiento que se basa en la propiedad común de la innovación, mediante la colaboración libre de los creadores, y la apropiación privada y comercial de las aplicaciones y productos derivados de esa creación. No se trata de abolir la propiedad privada, sino la propiedad de rentistas que bloquean la innovación y la distribución de la riqueza de la humanidad. Es un viejo tema, desde Proudhon. Pero también es un tema fundamental en un mundo en desarrollo donde la batalla en torno a los derechos de propiedad intelectual es la cuestión decisiva para que el planeta comparta la innovación y sus beneficios, en un círculo virtuoso entre los que contribuyen a la innovación como productores y los que la mejoran como usuarios, estén donde estén.