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

viernes, 22 de agosto de 2014

A continuación se presenta un mapa conceptual del software Libre que resume los aspectos mas relevantes del mismo (antecedentes, motivaciones y consecuencias).

Mapa Conceptual del Software Libre.

sábado, 16 de agosto de 2014

Entre los años 60 y 70 del Siglo XX, el software no era considerado un producto sino un añadido que los vendedores de los grandes computadoras de la época (mainframes) aportaban a sus clientes para que éstos pudieran usarlos. En dicha cultura, era común que los programadores y desarrolladores de software compartieran libremente sus programas unos con otros. Este comportamiento era particularmente habitual en algunos de los mayores grupos de usuarios de la época, como DECUS (grupo de usuarios de computadoras DEC). A finales de los 70, las compañías iniciaron el hábito de imponer restricciones a los usuarios, con el uso de acuerdos de licencia.

Allá por el 1971, cuando la informática todavía no había sufrido su gran boom, las personas que hacían uso de ella, en ámbitos universitarios y empresariales, creaban y compartían el software sin ningún tipo de restricciones.



Con la llegada de los años 80 la situación empezó a cambiar. Las computadoras más modernas comenzaban a utilizar sistemas operativos privativos, forzando a los usuarios a aceptar condiciones restrictivas que impedían realizar modificaciones a dicho software.


En caso de que algún usuario o programador encontrase algún error en la aplicación, lo único que podía hacer era darlo a conocer a la empresa desarrolladora para que esta lo solucionara. Aunque el programador estuviese capacitado para solucionar el problema y lo desease hacer sin pedir nada a cambio, el contrato le impedía que mejorase el software.

El mismo Richard Stallman cuenta que por aquellos años, en el laboratorio habían recibido una impresora donada por una empresa externa. El dispositivo, era utilizado en red por todos los trabajadores, parecía no funcionar a la perfección dado que cada cierto tiempo el papel se atascaba. Como agravante, no se generaba ningún aviso que se enviase por red e informase a los usuarios de la situación.

La perdida de tiempo era constante, ya que en ocasiones, los trabajadores enviaban por red sus trabajos a imprimir y al ir a buscarlos se encontraban la impresora atascada y una cola enorme de trabajos pendientes. Richard Stallman decidió arreglar el problema, e implementar el envío de un aviso por red cuando la impresora se bloqueara. Para ello necesitaba tener acceso al código fuente de los controladores de la impresora. Pidió a la empresa propietaria de la impresora lo que necesitaba, comentando, sin pedir nada a cambio, que era lo que pretendía realizar. La empresa se negó a entregarle el código fuente.

En ese preciso instante, Richard Stallman se vio en una encrucijada, debía elegir entre aceptar el nuevo software privativo firmando acuerdos de no revelación y acabar desarrollando más software privativo con licencias restrictivas, que a su vez deberían ser más adelante aceptadas por sus propios colegas.

Con este antecedente, en 1984 Richard Stallman comenzó a trabajar en el proyecto GNU, y un año más tarde fundó la Free Software Foundation (FSF). Stallman introdujo una definición para free software y el concepto de "copyleft", el cual desarrolló para dar a los usuarios libertad y para restringir las posibilidades de apropiación del software.

A continuación se presenta una de infografía muy interesante que relata de manera gráfica los hechos mas importante del Software Libre. 


Infografía del Software Libre

miércoles, 13 de agosto de 2014

Definición 


El Software libre es el aquel que respeta la libertad de los usuarios y la comunidad para ejecutar, copiar, y distribuir, estudiar, modificar y mejorar el software. Un programa se considera software libre si los usuarios que tienen, disponen las cuatro libertades esenciales:

- Libertad 0: libertad de ejecutar el programa como se desea, con cualquier propósito.

- Libertad 1: libertad de estudiar cómo funciona el programa, y cambiarlo para que haga lo que usted quiera. El acceso al código fuente es una condición necesaria para ello.

- Libertad 2: libertad de redistribuir copias para ayudar a su prójimo.

- Libertad 3: libertad de distribuir copias de sus versiones modificadas a terceros. Esto le permite ofrecer a toda la comunidad la oportunidad de beneficiarse de las modificaciones. El acceso al código fuente es una condición necesaria para ello.

El opuesto del Software libre es el denominado software propietario, aquel que es imposible de utilizar en otro hardware, o terminal modificar, o transferir sin pagar derechos a su inventor o creador. Para ello, quienes han patentado software libre, lo han hecho permitiendo las actividades recién nombradas. Así nace el Copyleft (el opuesto del Copyright de los derechos autorales), que es básicamente el principio de que cualquier modificación o cambio (“derivative works”), debe quedar disponible para el resto de la comunidad bajo el mismo licenciamiento original. Con ello se fomenta el trabajo colaborativo en el desarrollo de la informática. 

A continuación se presente una infografía que permitirá comprender de manera gráfica el concepto del software libre.




Software Libre no es Software Gratuito

En este sentido, el término Libre hace referencia a Libertad de uso y no al costo de mismo. Un eslogan frecuentemente usado es "libre como en libertad, no como en cerveza gratis" o en inglés "Free as in freedom, not as in free beer". Para evitar la confusión, algunas personas utilizan los términos "libre" (Libre software) y "gratis" (Gratis software) para evitar la ambigüedad de la palabra inglesa "free". Sin embargo, estos términos alternativos son usados únicamente dentro del movimiento del software libre, aunque están extendiéndose lentamente hacia el resto del mundo.