Lecciones de Software Libre

Angel E. Mendoza

Entendiendo el Software Libre de una manera divertida

¿Quién dice que aprender no es divertido?, como dicen, para muestra un botón (o en este caso un video):

Migrando a Software Libre Parte 3

Hablamos de... Migración a Software Libre

Migrando a Software Libre Parte 2

En el post Anterior: Migrando a Software Libre Parte 1, listamos algunas consideración a tener en cuenta para la migración a Software Libre.
Ahora, veremos otros aspectos también importantes, que debemos tener en cuenta en un proceso de migración:

1. Entender claramente el concepto de Software Libre.
Software libre no significa software gratis. Si la única motivación para realizar la migración, es ahorrar el costo de las licencias, el proyecto tendrá altas probabilidades de fracasar. Las principales ventajas de migrar a software libre son la independencia tecnológica, la seguridad, estabilidad, etc. además de libertades que este ofrece.

2. Tener un plan para capacitar a los usuarios en el software que se va a instalar
Para promover la aceptación del cambio, la capacitación de todos los usuarios involucrados, debe ser obligatoria, debe ser por fases y en grupos relativamente pequeños. Se recomienda programarlas en el horario de trabajo para no crear más resistencia de la que se dará naturalmente por el cambio.

3. Convencimiento y apoyo incondicional al proyecto.
El factor humano juega un papel fundamental en este tipo de proyectos, donde el impacto es alto. Por esto es necesario hacer todo lo posible para convencerlos de los beneficios de la migración (Ver entrada anterior). Es importantísimo que el convencimiento comience por los promotores e impulsores del proyecto.

4. Determinar adecuadamente, el software a instalar en cada caso.
Dependiendo del tamaño de la empresa, el número de equipos, las aplicaciones que usa y sus necedades (consideraciones tecnológicas), se determinará que sistema operativo se instalará en los servidores y que sistema operativo en las PC.

5. Hacer la migración por fases
Lo mas recomendable es empezar migrando lo que podamos migrar sin afectar al usuario final. Por ejemplo: migración de servidores de correo, servidores de aplicaciones,... y finalmente migrar lentamente las aplicaciones de escritorio, operación que debe ir precedida por un adecuado proceso de capacitación.

Estos son algunos de los aspectos que nos ayudaran a garantizar que un proyecto de migración tenga éxito. Siempre es importante validar las condiciones del ambiente (organización) donde se va a ejecutar el proyecto; si aún no están dadas, se debe ajustar la planificación para internar ponerlas a nuestro favor.

Fuente: http://salomonrt.wordpress.com/2010/05/28/migracion-a-software-libre-en-una-empresa/

Migrando a Software Libre Parte 1

Aspectos relacionados a la Migración a Software Libre.

Un par de definiciones:

eiraworks La migración tiene como objetivo la sustitución de las infraestructuras basadas en Software Propietario por otras con funciones equivalentes basadas en Software Libre. Esta migración proporciona beneficios tanto económicos como prácticos. No es una mera cuestión técnica, sino que es una cuestión de uso, y debe abordarse de esta forma para tener éxito en la misma.

investic La migración a Software Libre se refiere a un conjunto de actuaciones cuya finalidad es la sustitución de infraestructuras tecnológicas apoyadas en software propietario por otras con funciones equivalentes basadas en Software Libre.


Consideraciones técnicas al momento de Migrar a software libre
  • Migrar desktops es probablemente lo más complicado de todo porque entra en juego el factor humano.
  • Hay que incentivar a los usuarios a aprender nuevas cosas. Un elemento para convencerlos en esforzarse por migrar es que van a alimentar su CV, emitir un certificado por las capacitaciones recibidas es algo muy importante. Detectar a los mas hábiles en la capacitación, promoverlos a soporte de su área, es otra amanera de incentivarlos.
  • El usuario debe perder el miedo a lo desconocido, migrar por etapas, grupos o personas individuales progresivamente es algo muy bueno para esto.
  • Ver que sus jefes usan los sistemas libres es un elemento de importancia (predicar con el ejemplo), de otra manera no querrán migrar.
  • El usuario siempre se pregunta si su archivo en “office” va a poder ser leído en el nuevo software (el 90% de su data personal es de este tipo), la respuesta es si; instalarle una suite ofimática libre antes de migrar para que lo compruebe es buena idea.
  • Los usuarios ya están acostumbrados a compartir disco e impresoras, Linux también permite hacer esto y en mayor escala usando sus servicios o los de SAMBA para emular una conocida red privativa. Evaluar el usar una solución GroupWare para compartir recursos de disco podría ser muy beneficiosa, especialmente para asegurar las copias de seguridad.
  • Seleccionar una distribución no debe ser un dolor de cabeza pero si es importante.No es necesario reinventar la rueda (hacer tu propia distribución).Básicamente tenemos 2 tipos de distribuciones sobre las cuales elegir y tienen que ver mucho con el sistema de paqueteria que usan: Las basadas en RPM (Fedora, OpenSuse, Mandriva) las basadas en DEB (Ubuntu y Debian).Todas las distribuciones ofrecen lo mismo, para seleccionar que desktop usar haz un focus group con tus usuarios, hay 2 opciones viables Gnome y Kde, las oras opciones para hardware de poca potencia no son user-friendly.
  • El soporte de server siempre esta asegurado por el área informática, pero el soporte de usuarios en instituciones grandes debe ser bien organizado o la migración fallará.
  • Si es imposible tener un help desk especifico para problemas de usuarios entonces se debe entrenar 1 o 2 usuarios a un nivel de profundidad mas alto para que sean el primer soporte del área.Es posible contratar soporte externo para los usuarios, pero podría ser mas caro que el help desk interno, hay que evaluar económicamente cual es mas rentable.
  • Casi todo aplicativo privativo tiene su contrapartida libre.Existen muchas guías sobre equivalencias de software en la red, ONGEI provee una mas o menos fiable.
  • No toda contrapartida libre ofrece el 100% de funcionalidades de su par privativo, en algunos casos los supera y en otros casos es menor, pero hay que evaluar con el usuario si esas funcionalidades no ofrecidas por la alternativa libre van a ser usadas en extenso, generalmente la respuesta es NUNCA LA USO.

Fuente: http://www.ongei.gob.pe/publica/metodologias/5137.pdf

Pruebas de Software Vs QA

Mejorar la calidad del Software, es una tarea compleja y que lleva muchas horas de trabajo. Para tratar de organizar estas actividades, han surgido diversos conceptos que resulta interesante conocer. Pruebas de Software (Software Testing) y Aseguramiento de Calidad (Quality Assurance QA), son dos de los conceptos más mencionados en cuanto a calidad de software se refiere. Ahora, contrastaremos estos conceptos, para ver sus similitudes y diferencias:

Las Pruebas de Software son una fase muy importante dentro de casi todos
los modelos conocidos de Ciclo de Vida del Software. Por ejemplo; en el venido de los 70’s pero aún utilizado, modelo Cascada, se realizan las pruebas una vez terminada la construcción del sistema, en el Incremental se realizan las pruebas en cada incremento del sistema, o por ejemplo, en el Evolutivo mediante la retroalimentación de los usuarios, en el espiral durante su verificación y validación del desarrollo, o en los enfoques XP (eXtreme Programming o Programación Extrema) con repetidas pruebas de cada una de las mejoras debido a su desarrollo iterativo e incremental. Así podríamos ir mencionando otros modelos no tan conocidos pero que seguramente incluyen Pruebas también para entregar sistemas de Calidad.

Por otro lado, QA se refiere a asegurar (como su nombre lo dice) la calidad en cada una de las fases de la elaboración de un producto final, cualquiera que éste sea. En el caso de QA de software, se referirá entonces, a asegurar la calidad de los resultados de cada una de las fases del ciclo de vida del software y con esto, asegurar la calidad del producto final. Para cumplir con este aseguramiento se deberán definir estándares y establecer procedimientos contra los cuales se pueda comparar lo alcanzado durante cada una de las fases. Por ejemplo; si para el Análisis de Requisitos dentro de un modelo cascada, se ha definido un tipo determinado de documento a presentar, entonces para pasar a la fase de Diseño, el documento de Análisis deberá estar conforme al documento estándar ya que una fase que no se ejecutó de forma correcta podría causar (y muy probablemente lo haga) defectos en las fases posteriores. La idea es que mientras más temprano se detecten las fallas, menor será el costo (monetario, de tiempo, recursos, calidad, etc.) de repararlas y mayor la calidad del producto final.

Ahora veamos algunas diferencias y relaciones entre estos conceptos:
  • Las Pruebas de Software se realizan en una de las fases del ciclo de vida del software; mientras que QA de software se deberá ejecutar en todas las fases (incluida la fase de Pruebas).
  • Las Pruebas de Software utilizarán Casos de Pruebas para ser ejecutados; en cambio QA de software utilizará los estándares y procedimientos establecidos para cada una de las fases del ciclo de vida del software.
  • Ambas permitirán verificar y afirmar la calidad del producto final, el software.
  • Ambas definen un conjunto de actividades a realizarse dentro del ciclo de vida del software para mejorar y asegurar la calidad del mismo.
Con esta breve explicación, será mucho mas fácil, distinguir estos términos y determinar su importancia en el proceso de desarrollo de software.

Fuente: http://www.calidadysoftware.com/testing/testing_vs_quality_assurance.php


Calidad del software: conseguirla y controlarla

Revisando artículos sobre la calidad del software, me tope con un interesante ensayo titulado: Un enfoque actual sobre la calidad del software, que presenta dos interesantes secciones sobre cómo obtener software de calidad y cómo controlar la calidad del software, veamos de que se trata.


¿COMO OBTENER UN SOFTWARE DE CALIDAD?
La obtención de un software con calidad implica la utilización de metodologías o procedimientos estándares para el análisis, diseño, programación y prueba del software que permitan uniformar la filosofía de trabajo, en aras de lograr una mayor confiabilidad, mantenibilidad y facilidad de prueba, a la vez que eleven la productividad, tanto para la labor de desarrollo como para el control de la calidad del software.

La política establecida debe estar sustentada sobre tres principios básicos: tecnológico, administrativo y ergonómico.

  • El principio tecnológico define las técnicas a utilizar en el proceso de desarrollo del software.
  • El principio administrativo contempla las funciones de planificación y control del desarrollo del software, así como la organización del ambiente o centro de ingeniería de software.
  • El principio ergonómico define la interfaz entre el usuario y el ambiente automatizado.
La adopción de una buena política contribuye en gran medida a lograr la calidad del software, pero no la asegura. Para el aseguramiento de la calidad es necesario su control o evaluación.

¿COMO CONTROLAR LA CALIDAD DEL SOFTWARE?

Para controlar la calidad del software es necesario, ante todo, definir los parámetros, indicadores o criterios de medición, ya que, como bien plantea Tom De Marco, "usted no puede controlar lo que no se puede medir".

Las cualidades para medir la calidad del software son definidas por innumerables autores, los cuales las denominan y agrupan de formas diferentes. Por ejemplo, John Wiley define métricas de calidad y criterios, donde cada métrica se obtiene a partir de combinaciones de los diferentes criterios. La Metodología para la evaluación de la calidad de los medios de programas de la CIC, de Rusia, define indicadores de calidad estructurados en cuatro niveles jerárquicos: factor, criterio, métrica, elemento de evaluación, donde cada nivel inferior contiene los indicadores que conforman el nivel precedente. Otros autores identifican la calidad con el nivel de complejidad del software y definen dos categorías de métricas: de complejidad de programa o código, y de complejidad de sistema o estructura.

Todos los autores coinciden en que el software posee determinados índices medibles que son las bases para la calidad, el control y el perfeccionamiento de la productividad.

Una vez seleccionados los índices de calidad, se debe establecer el proceso de control, que requiere los siguientes pasos:
  • Definir el software que va a ser controlado: clasificación por tipo, esfera de aplicación, complejidad, etc., de acuerdo con los estándares establecidos para el desarrollo del software.
  • Seleccionar una medida que pueda ser aplicada al objeto de control. Para cada clase de software es necesario definir los indicadores y sus magnitudes.
  • Crear o determinar los métodos de valoración de los indicadores: métodos manuales como cuestionarios o encuestas estándares para la medición de criterios periciales y herramientas automatizadas para medir los criterios de cálculo.
  • Definir las regulaciones organizativas para realizar el control: quiénes participan en el control de la calidad, cuándo se realiza, qué documentos deben ser revisados y elaborados, etc.

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.


Calidad del Software



Importancia del Aseguramiento de la Calidad del Software

Translate

Seguidores