domingo, 23 de enero de 2011

Software libre

¿Qué es GNU? ¡Gnu No es Unix!


GNU, que significa Gnu No es Unix, es el nombre de un sistema de software completamente compatible con Unix que se desarrolla para poder regalarlo libremente a quien pueda utilizarlo, en el cual existen varios voluntarios colaborando, Son muy necesarias las contribuciones en tiempo, dinero, programas y equipamiento.

GNU será capaz de ejecutar programas de Unix, pero no será idéntico a Unix.

Para evitar una horrible confusión, por favor pronuncie la «G» en la palabra «GNU» cuando se refiera al nombre de este proyecto.


Por qué escribir GNU


Considero que la regla de oro requiere que si a alguien le gusta un programa, lo debe compartir con otra gente que le guste. Los vendedores de software quieren dividir a los usuarios y seducirlos, haciendo que cada usuario acuerde no compartir su software con otros.

Por qué GNU será compatible con Unix


Las características esenciales de Unix parecen ser buenas y se puede añadir lo que le falta a Unix sin echarlas a perder. Un sistema compatible con Unix sería conveniente para que otras personas puedan adoptarlo.


Cómo está disponible GNU


GNU no es de dominio público. Todos tienen permiso para modificar y redistribuir

GNU, pero a ningún distribuidor se le permite restringir su redistribución posterior.

Es decir, no estarán permitidas modificaciones propietarias.


Por qué se beneficiarán todos los usuarios de ordenadores


Una vez que se haya escrito GNU, todos podremos obtener un buen sistema de software libre, al igual que obtenemos aire.

Esto significa mucho más que el simple ahorro del precio de una licencia Unix. Significa que se evitará mucho del derroche de esfuerzos en la duplicación de la programación de sistemas. Este esfuerzo puede enfocarse mejor para hacer avanzar el estado de la técnica.

Los códigos completos del sistema estarán disponibles para todo el mundo. Como resultado, un usuario que necesite modificar el sistema será siempre libre de hacerlo por sí mismo, o de contratar a cualquier programador o empresa disponible para hacerlo por él. Los usuarios no estarán ya a merced de un programador o una empresa que sea dueña del código fuente y que sea la única en posición de realizar modificaciones.

Las escuelas podrán proporcionar un ambiente bastante más educativo, animando todos los estudiantes a estudiar y mejorar el código del sistema.

Finalmente, el lastre de considerar quién es dueño de qué sistema de software y de lo que está o no está permitido hacer con él, habrá desaparecido.


La definición de software libre


Conservamos esta definición de software libre para expresar claramente el verdadero significado de los programas de software libre.

El «software libre» es una cuestión de libertad, no de precio. Para comprender este concepto, debemos pensar en la acepción de libre como en «libertad de expresión» y no como en «barra libre de cerveza».

Con software libre nos referimos a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software.


Nos referimos especialmente a cuatro clases de libertad para los usuarios de software:


Libertad 0: la libertad para ejecutar el programa sea cual sea nuestro propósito.

Libertad 1: la libertad para estudiar el funcionamiento del programa y adaptarlo a tus necesidades —el acceso al código fuente es condición indispensable para esto.

Libertad 2: la libertad para redistribuir copias y ayudar así a tu vecino.

Libertad 3: la libertad para mejorar el programa y luego publicarlo para el bien de toda la comunidad —el acceso al código fuente es condición indispensable para esto.


Software libre es cualquier programa cuyos usuarios gocen de estas libertades. De modo que deberías ser libre de redistribuir copias con o sin modificaciones, de forma gratuita o cobrando por su distribución, a cualquiera y en cualquier lugar. Gozar de esta libertad significa, entre otras cosas, no tener que pedir permiso ni pagar para ello.



Asimismo, deberías ser libre para introducir modificaciones y utilizarlas de forma privada, ya sea en tu trabajo o en tu tiempo libre, sin siquiera tener que mencionar su existencia. Si decidieras publicar estos cambios, no deberías estar obligado a notificárselo a ninguna persona ni de ninguna forma en particular.

La libertad para utilizar un programa significa que cualquier individuo u organización podrán ejecutarlo desde cualquier sistema informático, con cualquier fin y sin la obligación de comunicárselo subsiguientemente ni al desarrollador ni a ninguna entidad en concreto.


El software libre no significa que sea «no comercial». Cualquier programa libre estará disponible para su uso, desarrollo y distribución comercial. El desarrollo comercial del software libre ha dejado de ser excepcional y de hecho ese software libre comercial es muy importante.


Cuando hablamos de software libre, es preferible evitar expresiones como «regalar» o «gratis», porque entonces caeremos en el error de interpretarlo como una mera cuestión de precio y no de libertad. Términos de uso frecuente como el de «piratería» encarnan opiniones que esperamos no compartas.


Por qué el software no debe tener propietarios


El sistema de copyright permite que los programas de software tengan «propietarios», la mayor parte de los cuales pretende privar al resto del mundo del beneficio potencial del software. Los propietarios desearían ser los únicos que pueden copiar y modificar el software que usamos.


El sistema de copyright se desarrolló con la imprenta —una tecnología usada para la producción masiva de copias. El copyright se ajustaba bien a esta tecnología puesto que restringía sólo a los productores de copias en masa. No privaba de libertad a los lectores de libros. Un lector cualquiera, que no poseyera una imprenta, sólo podía copiar libros con pluma y tinta, y a pocos lectores se les ponía un pleito por ello.


Las tecnologías digitales son más flexibles que la imprenta: cuando la información adopta forma digital, puedes copiarla fácilmente para compartirla con otros. Es precisamente esta flexibilidad la que se ajusta mal a un sistema como el del copyright. Esa es la razón del incremento de medidas odiosas y draconianas ahora usadas para hacer cumplir el copyright del software.


Los propietarios hacen uso de distintos argumentos para que se les conceda el control de cómo usamos la información:


Insultos

Los propietarios usan palabras difamatorias como «piratería» y «robo», al igual que terminología experta como «propiedad intelectual» y «daño», para sugerir una cierta línea de pensamiento al público —una analogía simplona entre los programas y los objetos físicos.

Nuestras ideas e intuiciones acerca de la propiedad sobre los objetos materiales tratan acerca de si es justo privarle a alguien de un objeto. No se aplican directamente a hacer copias de algo. Pero los propietarios nos piden que apliquemos estas ideas de todas formas.


Exageración

Los propietarios dicen que sufren un «daño» o «pérdida económica» cuando los usuarios copian programas por su cuenta. Pero copiar no tiene un efecto directo sobre el propietario, y no hace daño a nadie. El propietario sólo puede perder si la persona que hizo la copia hubiese pagado por otra del propietario en su lugar.

Un poco de reflexión muestra que la mayoría de esas personas no habrían comprado copias. Aun así los propietarios calculan sus «pérdidas» como si todos y cada uno hubiesen comprado una copia. Esto es una exageración —por decirlo de forma suave.


La ley

Los propietarios a menudo describen el estado actual de la ley, así como las duras sanciones con las que nos amenazan. Implícita en este enfoque va la sugerencia de que la ley actual refleja un punto de vista moral incuestionable —y aun así al mismo tiempo, se nos insta a considerar estas sanciones como hechos naturales por los que no se puede responsabilizar a nadie.

Esta línea de persuasión no está diseñada para reafirmar el pensamiento crítico; está concebida para reforzar un camino mental ya trazado.


Economía

El último argumento que se emplea para justificar la existencia de propietarios de software es que esto conduce a la producción de más software.

A diferencia de los demás, éste argumento por lo menos adopta un enfoque legítimo sobre el tema. Se basa en un objetivo válido —satisfacer a los usuarios de software. Y empíricamente está claro que la gente producirá más de algo si se les paga bien por ello.

Pero el argumento económico tiene un defecto: se basa en la presunción de que la diferencia es sólo cuestión de cuánto dinero debemos pagar. Asume que la «producción de software» es lo que queremos, tenga el software propietarios o no.

La gente acepta gustosamente esta presunción por que está de acuerdo con nuestra experiencia acerca de los objetos materiales.

Esto es cierto para cualquier objeto material —el hecho de que tenga o no tenga propietario no afecta directamente a lo que es, o a lo que puedas hacer con ello si lo adquieres.

Pero si un programa tiene un propietario, esto afecta en gran medida a lo que es, y a lo que puedes hacer con una copia si la compras. La diferencia no es sólo una cuestión de dinero. El sistema de propietarios de software incentiva a los propietarios de software a producir algo —pero no lo que la sociedad realmente necesita. Y causa una contaminación ética intangible que nos afecta a todos.


¿Qué encierra un nombre?


Los nombres transmiten significados; nuestra elección de los nombres determina el significado de lo que expresamos. Un nombre inadecuado dará a la gente una idea equivocada.

Si llamamos «Linux» a nuestro sistema operativo, esto conduce a una idea equivocada sobre el origen del sistema, su historia y su propósito. Si lo llamamos «GNU/Linux», esto conduce —aunque no en detalle— a una idea precisa.

Pero ¿importa esto en nuestra comunidad? ¿Es importante que la gente conozca el origen del sistema, su historia y su propósito? Sí, porque quienes olvidan la historia están condenados a repetirla. El Mundo Libre que se ha desarrollado en torno a

GNU/Linux no es un lugar seguro; los problemas que nos llevaron a crear GNU no han sido completamente erradicados y amenazan con volver.


Por qué «software libre» es mejor que «open source»


Dado que el software libre te daría la misma libertad con cualquier otro nombre, qué nombre usemos marca una gran diferencia: palabras distintas transmiten distintas ideas.

En 1998, algunos dentro de la comunidad del software libre empezaron a usar el término «software open source» en lugar de «software libre» para describir lo que hacían.

El término open source se asoció rápidamente con un enfoque distinto, una filosofía distinta, e incluso diferentes criterios para decidir que licencias son aceptables. El movimiento de software libre y el movimiento open source son hoy en día movimientos separados con diferentes puntos de vista y objetivos, aunque podamos y trabajemos juntos en algunos proyectos prácticos.

La diferencia fundamental entre los dos movimientos está en sus valores, en su visión del mundo. Para el movimiento open source, la cuestión de si el software debe ser de fuente abierta es una cuestión práctica, no ética. Como lo expresó alguien, «el

open source es un método de desarrollo; el software libre es un movimiento social».

Para el movimiento open source, el software no libre es una solución ineficiente. Para el movimiento de software libre, el software no libre es un problema social y el software libre es la solución.



Relación entre el movimiento del software libre y el movimiento «open source»


El movimiento del software libre y el movimiento open source son como dos campos

políticos dentro de la comunidad del software libre.

La definición oficial de «software de código fuente abierto», tal y como está publicada por la Open Source Initiative, se acerca mucho a nuestra definición de software libre; de todos modos, es algo pobre en algunos aspectos, y han aceptado algunas licencias que nosotros consideramos inaceptablemente restrictivas para los usuarios. De todos modos, el significado obvio para «software de código fuente abierto» es que «puedes ver el código fuente». Este es un criterio más pobre que el del «software libre». «Software de código fuente abierto» incluye software libre, pero también incluye programas

semi-libres tales como Xv, e incluso algunos programas propietarios, como Qt bajo su licencia inicial (antes de la QPL).

Ese significado obvio para «fuente abierta» no es el significado que sus defensores pretenden. El resultado es que la gente a menudo malinterpreta los que esos defensores defienden. Así definió «software open source» el escritor Neil Stephenson:

Linux es “software open source”, lo cual quiere decir simplemente que cualquiera puede conseguir copias de sus archivos de código fuente.


Vender software libre


Mucha gente cree que el espíritu del proyectoGNUconsiste en que no se debe poner precio a la distribución de copias de software, o que se debe cobrar lo menos posible

—lo suficiente para cubrir costes.


La palabra «libre» admite dos significados generales; se puede referir tanto a la libertad como al precio. Cuando hablamos de «software libre» nos referimos a la libertad y no al precio. En concreto, esto significa que un usuario es libre de instalar un programa, cambiarlo y redistribuirlo con o sin cambios.

Algunas veces los programas libres se distribuyen gratis y otras a cambio de un precio cuantioso. A menudo un mismo programa está disponible de ambas formas en diferentes lugares. El programa es libre sin que importe su precio, porque los usuarios lo pueden utilizar libremente.


Los programas que no son libres se venden frecuentemente a precios altos, pero a veces una tienda te ofrece una copia sin cobrarte. No obstante, eso no lo convierte en software libre. Con o sin precio, el programa no es libre porque los usuarios no tienen libertad.

Dado que el software libre no es una cuestión de precio, un precio bajo no resulta más libre, ni más próximo a lo libre. De modo que si redistribuyes copias de software libre, también puedes fijar un precio cuantioso para hacer algo de dinero. Redistribuir software es una actividad buena y legítima; si lo haces, también puedes sacar una ganancia por ello.

El software libre es un proyecto comunitario y cualquiera que lo integre debería buscar formas de contribuir a la construcción de la comunidad. La manera de conseguir esto, para un distribuidor, consiste en donar una parte de los beneficios a la Free

Software Foundation o a cualquier otro proyecto que desarrolle el software libre. Financiando el desarrollo harás avanzar el mundo del software libre.


La expresión «vender software» también puede ser confusa


Rigurosamente «vender» significa intercambiar bienes por dinero. Vender una copia de un programa libre es legítimo y nosotros lo alentamos.

De todos modos, cuando la gente piensa acerca de «vender software», normalmente imagina que se hace del mismo modo que la mayoría de las empresas: produciendo software propietario mejor que software libre.

Por lo tanto, a menos que se establezcan las distinciones con cuidado, como se hace en este artículo, aconsejamos que se evite la expresión «vender software» y que se elija otra fórmula en su lugar. Por ejemplo, se podría decir «distribuir software libre por un precio» —una fórmula no ambigua.

Fuente:


Software libre para una sociedad libre, Diciembre 2004, Versión 1.0


martes, 18 de enero de 2011

Garantia de calidad estadística


La garantía de calidad estadística refleja una tendencia, creciente en toda la industria, a establecer la calidad más cuantitativamente. Para el software, la garantía de calidad estadística implica los siguientes

Pasos:


  • Se agrupa y se clasifica la información sobre los defectos del software.
  • Se intenta encontrar la causa subyacente de cada defecto (por ejemplo, no concordancia con la especificación, error de diseño, incumplimiento de los estándares, pobre comunicación con el cliente).
  • Mediante el principio de Pareto (el 80 por 100 de los defectos se pueden encontrar en el 20 por 100 de todas las posibles causas), se aísla el 20 por 100 (los «POCOS vitales»).
  • Una vez que se han identificado los defectos vitales, se actúa para corregir los problemas que han producido los defectos.

Ejemplo:

Para ilustrar el proceso, supongamos que una organización de desarrollo de software recoge información sobre defectos durante un período de un año. Algunos de los defectos se descubren mientras se desarrolla el software. Otros se encuentran después de que el software se haya distribuido al usuario final. Aunque se descubren cientos de errores diferentes, todos se pueden encontrar en una (o más) de las siguientes causas:



  • Especificación incompleta o errónea (EIE).
  • Mala interpretación de la comunicación del cliente (MCC).
  • Desviación deliberada de la especificación (DDE).
  • Incumplimiento de los estándares de programación (IEP).
  • Error en la representación de los datos (ERD).
  • Interfaz de módulo inconsistente (IMI).
  • Error en la lógica de diseño (ELD).
  • Prueba incompleta o errónea (PIE).
  • Documentación imprecisa o incompleta (DII).
  • Error en la traducción del diseño al lenguaje de programación (TLP).
  • Interfaz hombre-máquina ambigua o inconsistente (IHM).
  • Varios (VAR).

Para aplicar la SQA estadística se construye la Tabla 8.1. La tabla indica que EIE, MCC y ERD son las causas vitales que contabilizan el 53 por 100 de todos los errores. Sin embargo, debe observarse que si sólo se consideraran errores serios, se seleccionarían las siguientes causas vitales: EIE, ERD, TLP y ELD. Una vez determinadas las causas vitales, la organización de desarrollo de software puede comenzar la acción correctiva. Por ejemplo, para corregir la MCC, el equipo de desarrollo del software podría implementar técnicas que facilitaran la especificación de la aplicación para mejorar la calidad de la especificación y la comunicación con el cliente. Para mejorar el ERD, el equipo de desarrollo del software podría adquirir herramientas CASE para la modelización de datos y realizar revisiones del diseño de datos más rigurosas.

Es importante destacar que la acción correctiva se centra principalmente en las causas vitales. Cuando éstas son corregidas, nuevas candidatas saltan al principio de la lista.

Se han mostrado las técnicas de garantía de calidad del software estadísticas para proporcionar una mejora sustancial en la calidad. En algunos casos, las organizaciones de software han conseguido una reducción anual del 50 por 100 de los errores después de la aplicación de estas técnicas.

Junto con la recopilación de información sobre defectos, los equipos de desarrollo del software pueden calcular un índice de errores (IE) para cada etapa principal del proceso de ingeniería del software. Después del análisis, el diseño, la codificación, la prueba y la entrega, se recopilan los siguientes datos:



Ei = número total de defectos descubiertos durante la etapa i-ésima del proceso de ingeniería del software;

Si = número de defectos graves;

Mi =número de defectos moderados;

Tj = número de defectos leves;

PS =tamaño del producto (LDC, sentencias de diseño, páginas de documentación) en la etapa i-ésima.

W, , W,,, , W, = factores de peso de errores graves, moderados, y leves, en donde los valores recomendados son W, = 10, W,,, = 3, W, = 1. Los factores de peso de cada fase deberían agrandarse a medida que el desarrollo evoluciona. Esto favorece a la organización que encuentra los errores al principio.

En cada etapa del proceso de ingeniería del software se calcula un índice de fase, ZFi :





El índice de errores (IE) se obtiene mediante el cálculo del defecto acumulativo de cada IFi, asignando más peso a los errores encontrados más tarde en el proceso de ingeniería del software, que a los que se encuentran en las primeras etapas:



Se puede utilizar el índice de errores junto con la información recogida en la Tabla 8.1, para desarrollar una indicación global de la mejora en la calidad del software.

Fuente:

Roger Pressman, Ingenieria del Software un enfoque practico, Edición V.