miércoles, 29 de junio de 2011

Ficha Técnica Planeta Linux Venezuela

Ficha Técnica
Comunidades del Software Libre
  
Nombre:

Planeta Linux Venezuela

Descripción/Misión/Objetivos:



PlanetaLinux es una comunidad de usuarios, desarrolladores y activistas iberoamericanos de software libre, GNU/Linux y similares. A través de los blogs, de cada uno de los miembros de esta comunidad, se entera de lo que pasa, de primera mano, a nuestro alrededor de una forma divertida y actualizada al día por día.
Para unirse debe leer los lineamientos. Para hacer cualquier petición, ya sea para agregarse, modificar algún feed existente o reportar problemas con el sitio, se hace a través de la pagina de contacto.
Actividades/Proyectos:




Planetalinux, posee actividades como wiki, blog, videos, y foro de discusión a través del cual se debaten temas relacionados con el proyecto Linux.
Planetalinux tiene una cuenta en Identi.ca, un servicio de microblogueo basado en la herramienta de software libre StatusNet.

Fecha de creación:
Octubre de 2004
Observaciones:


Actualmente esta comunidad está conformada por 112 usuarios registrados.
El sitio contiene artículos técnicos, noticias y todo tipo de contenido en Español relacionado con Linux. Los visitantes se dedican a colaborar debatiendo en los foros, enviando artículos técnicos y noticias.

 Elaborado por: Estelita Martínez

martes, 21 de junio de 2011

Software libre vs código abierto

Diferencia de principios
A continuación los principios que definen el software libre y el código abierto (opensource):
Software libre:
  • La libertad de ejecutar el programa, para cualquier propósito (libertad 0).
  • La libertad de estudiar cómo trabaja el programa, y cambiarlo para que haga lo que usted quiera (libertad 1). El acceso al código fuente es una condición necesaria para ello.
  • La libertad de redistribuir copias para que pueda ayudar al prójimo (libertad 2).
  • La libertad de distribuir copias de sus versiones modificadas a terceros (la 3ª libertad). Si lo hace, puede dar a toda la comunidad una oportunidad de beneficiarse de sus cambios. El acceso al código fuente es una condición necesaria para ello.
  • Redistribución Libre
  • Código Fuente
  • Trabajos Derivados
  • Integridad Del Código Fuente Del Autor
  • No a la Discriminación de Personas o Grupos
  • No a la Discriminación de Campos Laborales
  • Distribución de la Licencia
  • La Licencia No Tiene que Ser Específica de un Producto
  • La Licencia No Tiene que Restringir a Otro Software

Análisis de los principios del software libre:

Si nos fijamos de acuerdo a estos principios el software libre de manera directa se construye para ser una satisfactor sinérgico de Entendimiento, Participación, Creación y mayor énfasis en la Libertad.

Si nos fijamos en término de satisfactores y  revisamos la licencia GPL nos damos cuenta que la redacción de Richard Stallman hace mayor énfasis en la Participación, ya que el copyleft es una garantía de libertad para que puedan colaborar los usuarios futuros y restringe la posibilidad de cerrar el software con licencia GPL. En una economía competitiva como la actual, donde se acostumbra a defraudar sistemáticamente, el copyleft garantiza la colaboración, al impedir que algún agente económico restrinja el acceso a las mejoras hechas al software construido por las comunidades de software libre. Existen otras licencias, como la licencia BSD, que no tienen esta garantía y existe la posibilidad legal de mezclar o transformar las mejoras de software con licencia BSD en software privativo.

Análisis de los principios del opensource:

Revisemos ahora los principios del opensource y su relación con las necesidades humanas fundamentales y nos podemos dar cuenta que se relacionan de manera indirecta a través de satisfactores ( Trabajo, No discriminación, Licencia, Productos, etc. ), es decir son principios menos claros y no por todos fácilmente entendibles, por la naturaleza de los satisfactores estos van a cambiar con el tiempo, por eso son más proclives a generar comunidades más inestables, complicadas y con mayor riesgo de ser manipuladas.

Aspectos Legales del Software Libre

LICENCIA PUBLICA GENERAL - GENERAL PUBLIC LICENSE.

Los principios que inspiran al software libre y que se garantizan a través del Copyleft, se logran gracias a la adopción del sistema de Licencia Pública General (LPG) o en ingles Public General License (PGL). El proyecto GNU (No es Unix) y las condiciones de distribución y redistribución del software libre, se encuentran claramente definidas en cuanto a sus términos y alcances en la Licencia Pública General (LPG). La licencia respectiva es incluida en cada paquete y hace parte de cada una de las distribuciones que se hace del código fuente de los programas GNU.

Así por ejemplo existe una Licencia Pública General para Bibliotecas (Library General Public License - LGPL), la cual ha sido rediseñada luego de que la misma se presto para usos incorrectos por parte de algunos de su usuario. La GPL lo que busca en ultimas es crear unos parámetros o standard generales en el licenciamiento del software libre, haciéndolos compatibles entre si.

Actualmente la versión oficial de la GPL aprobada por la Fundación de Software Libre se encuentra en idioma ingles, y no se han aprobado traducciones oficiales de la misma a otras lenguas para evitar tergiversaciones o interpretaciones erróneas. Sin embargo, existen una serie de traducciones no oficiales a varios idiomas (Alemán, Francés, Croata, Español, Italiano, Koreano, japonés, Ruso, Eslovaco, Portugués, Finlandés, Rumano, Gallego, Tailandés, Chino e Indonesio), que servirán de parámetro para entender en alguna medida de mejor manera la GNU - GPL. Estas traducciones al igual que el texto oficial en ingles y mucha otra información sobre el software libre y la Licencia Publica General pueden ser consultadas en www.gnu.org


TEXTOS LEGALES Y PROYECTOS DE LEY

En muchos y diversos Países del Globo, se han realizado avances significativos en la regulación positiva y en la fijación de políticas en cuanto a la adopción de los sistemas de software libre o de código abierto (Open Source).

En Latinoamérica Países como la Argentina, el Perú, México y Venezuela cuentan en la actualidad  con proyectos de ley en curso, que buscan establecer el uso de herramientas de software libre en las tres ramas del poder público (Ejecutivo, Legislativo y Judicial), así como en las demás entidades gubernamentales del orden local, regional y nacional. En Brasil, País líder en el desarrollo de software propietario, el movimiento del software libre ha tenido unos desarrollos plenos, donde existen algunos estados y provincias que cuentan con textos legales ya aprobados para su masificaciòn.

La Unión Americana y la mayoría de Estados que la conforman han empezado ha presentar proyectos de ley donde se busca la utilización del software libre con fines de seguridad nacional; destacándose el proyecto de Ley que actualmente se discute en el Estado de California (Digital Software Security Act).

En Asia, países como China, Japón y Malasia desde el año 2000 han buscado el desarrollo del software libre como una premisa que evite la dependencia tecnológica de países extranjeros y que suscite un desarrollo tecnológico sostenido en la industria nacional, que permita el empleo de mano de obra local y la reactivación de sus economías. 

En Europa gobiernos como el del Reino Unido, Francia, España, Italia, Bélgica, Finlandia, Noruega y Alemania han propugnado por la adopción tanto de una tecnología y una legislación que permita la masificaciòn del software libre con propósitos múltiples como el de seguridad nacional, interoperabilidad, creación de standares y compatibilidad. 



jueves, 2 de junio de 2011

Mapa Mental ISL V2

Pruebas de Software

El Software testing o como se conoce en español las pruebas de software se aplican como una etapa más del proceso de desarrollo de software, su objetivo es asegurar que el software cumpla con las especificaciones requeridas y eliminar los posibles defectos que este pudiera tener. En un principio la mayoría de  empresas de desarrollo contaban con una etapa de pruebas demasiado informal, en la actualidad el software testing se ha convertido en una de las etapas más críticas del ciclo de vida del desarrollo de software y esto ha causado el origen de diversas metodologías.

En la actualidad el software testing se hace más complicado ya que debe hacer frente a una gran cantidad de metodologías de desarrollo, lenguajes de programación, sistemas operativos, hardware etc.

Es por esto que el testing debe apoyarse en metodologías generales que revisan los aspectos más fundamentales que debe considerar todo proceso de pruebas. Debido a esta complejidad actualmente se cuentan con una gran cantidad de software diseñado exclusivamente para la etapa de pruebas, incluyendo la gestión del proceso de software testing, la administración y seguimiento de errores, la administración de los casos de prueba, automatización de pruebas etc.

Luego de culminadas las etapas de análisis, diseño y desarrollo se inicia la etapa de pruebas, en esta etapa lo recomendable es que el software se mantenga en un ambiente aislado o separado del ambiente de desarrollo o de producción, lo ideal es preparar un ambiente de pruebas lo más parecido a los ambientes que existen en producción para asegurar su correcto funcionamiento en esa futura etapa, se debe considerar adquirir un equipo de pruebas especializado “software tester” o analista de pruebas, con experiencia, estas personas tienen una formación que les permite detectar una gran cantidad de errores en tiempos mínimos, así como una metodología especifica que les permite hacer el trabajo de manera correcta, algunas empresas más informales utilizan a los futuros usuarios del sistema como testers situación que puede traer una serie de problemas debido a la poca experiencia que pueden tener los usuarios en la detección de errores, además se obvian pruebas importantes como las pruebas de Esfuerzo o “Stress testing”, también se dejan de lado las pruebas unitarias o pruebas modulares, las que deberían asegurar que cada modulo del sistema trabaje correctamente de manera independiente, otro error muy conocido en empresas de software es el uso de los mismos desarrolladores como analistas de pruebas, es muy difícil probar con objetividad un software si nosotros mismos lo hemos desarrollado, un técnico o analista programador empezara a probar con la idea preconcebida de que su hijito trabaja a la perfección e inconcientemente evitara realizar pruebas mas exhaustivas considerando que las mismas podrían ser absurdas o innecesarias, lo bueno es que poco a poco estas ideas van quedando descartadas y se van alineando conceptos hacia un software testing profesional.

PROCESOS DE PRUEBA DE SOFTWARE
Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solución de un problema u obtención de un producto, en este caso particular, para lograr la obtención de un producto software que resuelva un problema.

El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. Por ejemplo la creación de un sistema operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (por ejemplo, la resolución de una ecuación de segundo orden), éste puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño líneas de código o costo: de Pequeño, Mediano y Gran porte. Existen varias metodologías para estimarlo, una de las más populares es el sistema como que provee métodos y un software (programa) que calcula y provee una estimación de todos los costos de producción en un "proyecto software" (relación horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado, etc.).

Considerando los de gran porte, es necesario realizar tantas y tan complejas tareas, tantas técnicas, de gerenciamiento, fuerte gestión y análisis diversos (entre otras) que toda una ingeniería hace falta para su estudio y realización: es la ingeniería de software.

En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avezado analista programador solitario) pueden realizar la tarea. Aunque, siempre en casos de mediano y gran porte (y a veces también en algunos de pequeño porte, según su complejidad), se deben seguir ciertas etapas que son necesarias para la construcción del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicación, de acuerdo a la metodología o proceso de desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso).
 


Calidad del Software

Para entender mejor lo que es la Calidad del Software, comenzaremos viendo el concepto de calidad.

Wikipedia, introduce las siguientes definiciones de calidad:

  • Es la aptitud de un producto o servicio para satisfacer las necesidades del usuario.
  • Es la cualidad de todos los productos, no solamente de equipos sino también de programas.
  • Es la herramienta básica para una propiedad inherente de cualquier cosa que permite que esta sea comparada con cualquier otra de su misma especie.
La palabra calidad tiene múltiples significados. Es un conjunto de propiedades inherentes a un objeto que le confieren capacidad para satisfacer necesidades implícitas o explícitas. La calidad de un producto o servicio es la percepción que el cliente tiene del mismo, es una fijación mental del consumidor que asume conformidad con dicho producto o servicio y la capacidad del mismo para satisfacer sus necesidades. Por tanto, debe definirse en el contexto que se esté considerando, por ejemplo, la calidad del servicio postal, del servicio dental, del producto, de vida y en nuestro caso, la calidad del software. (http://es.wikipedia.org/wiki/Calidad_de_software)

Ahora, ¿qué es la calidad del software?

En su ensayo Un enfoque actual sobre la calidad del software, Fernández, García y Beltrán definen la calidad del software como el conjunto de cualidades que lo caracterizan y que determinan su utilidad y existencia. La calidad es sinónimo de eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad.

De igual manera resaltan algunas de sus características diciendo:
"La calidad del software es medible y varía de un sistema a otro o de un programa a otro. Un software elaborado para el control de naves espaciales debe ser confiable al nivel de "cero fallas"; un software hecho para ejecutarse una sola vez no requiere el mismo nivel de calidad; mientras que un producto de software para ser explotado durante un largo período (10 años o más), necesita ser confiable, mantenible y flexible para disminuir los costos de mantenimiento y perfeccionamiento durante el tiempo de explotación.
La calidad del software puede medirse después de elaborado el producto. Pero esto puede resultar muy costoso si se detectan problemas deriva dos de imperfecciones en el diseño, por lo que es imprescindible tener en cuenta tanto la obtención de la calidad como su control durante todas las etapas del ciclo de vida del software."

Pressman, la define como 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.

ISO 8402, dice que calidad del software es el conjunto de características de una entidad que le confieren su aptitud para satisfacer las necesidades expresadas y las implícitas.
Por último la IEEE, dice que la calidad del software es el grado con el que un sistema, componente o proceso cumple los requisitos especificados y las necesidades o expectativas del cliente o usuario.
Bien, una vez visto estas definiciones, veamos estos interesantes videos que explican lo que es calidad del Software y la importancia del aseguramiento de la calidad.