viernes, 28 de noviembre de 2008

Cierre del Foro Calidad y Pruebas del Software

1. La calidad del software se mide usualmente en términos de rendimiento (tiempo de respuesta), respuesta esperada a determinadas acciones (confiabilidad), accesibilidad (facilidad de acceso), seguridad (control de acceso), etc.
2. El plan de pruebas consiste en la elaboración de un conjunto de test y listas de chequeo que los usuarios aprueban una vez se apliquen en el software en evaluación.
3. Todo proyecto de software debe integrar dentro de su ciclo de desarrollo procesos de control de calidad y pruebas.
4. Existen varios modelos de gestión de la calidad del software. Según la norma ISO 9126 las características son portabilidad, eficiencia, confiabilidad, usabilidad, funcionabilidad y mantenibilidad (ver más detalle en: http://es.wikipedia.org/wiki/ISO_9126).
5. Los modelos son generales y deben ser particularizados a cada caso.
6. Los proyectos mientras más complejos y ambiciosos menos posibilidades tienen de implementarse exitosamente. Pueden ser concebidos desde la globalidad, pero su desarrollo e implementación debe ser progresivo y esta es una de las banderas del Software Libre, liberar versiones frecuentes del producto, utilizando estrategias que aseguren la escalabilidad e interoperabilidad del software gracias al uso de estándares abiertos.
7. El criterio de usabilidad debe garantizarse desde la concepción del proyecto, se fortalece en el diseño y cristaliza en el desarrollo.
8. Si el usuario es un miembro activo del equipo de trabajo en todas las fases de desarrollo del mismo, al momento de realizar las pruebas ya estará familiarizado con el aplicativo. Lo esperado es que la aplicación responda a las especificaciones de funcionamiento dadas por el usuario.
9. Un software de calidad es el resultado de un trabajo en equipo donde cada miembro hace bien su trabajo y la comunicación es constante, fluída y basada en un lenguaje común.
10. Los proyectos de software requieren de testeadores o probadores responsables de validar el funcionamiento de los productos de software.
11. Es responsabilidad del desarrollador entregar código depurado, así que las pruebas se focalizan en la integración, eficiencia y aceptación de usuarios.

Cierre del Foro Conceptualización de la Ingeniería del Software Libre

1. La Ingeniería del Software suministra metodologías, procesos y herramientas, es decir un marco común de trabajo para la comunidad de desarrolladores, administradores y usuarios.
2. El Ciclo de Vida del desarrollo del Software debe pasar por todas las fases (requerimientos, análisis, diseño, desarrollo, pruebas, implantación, uso, mantenimiento y obsolescencia) utilizando un Modelo Iterativo que permita que los productos se mantengan en constante construcción y crecimiento.
3. Conformación de un Comité de Gestión del proyecto, quienes toman decisiones que dan inicio al desarrollo de producto y delegan en grupos de trabajo el desarrollo. La aprobación sigue el proceso inverso hasta llegar al comité, quién decide si los cambios o nuevos productos se incorporan al proyecto o no.
4. Establecimiento de un claro esquema de Comunicación, que integre a usuarios y desarrolladores en la comunidad de desarrollo.
5. Uso de metodologías ágiles de desarrollo tales como eXtreme Programming, que faciliten la publicación frecuente de nuevas funcionalidades y versiones.
6. La Colaboración y la Planificación son factores claves en el éxito del sistema.
7. Uso intensivo de Internet como plataforma de comunicación y distribución del software.
8. La Flexibilidad de la Ingeniería del Software para adaptarse a las particularidades del Software Libre, brindando un basamento teórico y metodológico que respeta las 4 libertades del SL (ERA, LV,
9. Ambientes colaborativos de desarrollo que estimulan la Creatividad y el Trabajo en equipo facilitando la participación activa de usuarios y programadores.
10. Énfasis en Pruebas y Calidad. Liberación de versiones para evaluación y pruebas agilizan a través del trabajo colaborativo la obtención de productos de calidad.
11. Estimaciones basadas en proyectos similares y técnicas de descomposición en paquetes de trabajo para reducir la incertidumbre y mejorar la precisión de la planificación.
12. Uso de métodos de análisis como el FODA (Fortalezas, Oportunidades, Debilidades y Amenazas) fortalecen el estudio y comprensión del sistema.
13. Realizar estudios de factibilidad holísticos e integrales que consideren aspectos funcionales, técnicos y económicos para garantizar la viabilidad del proyecto y establecer claramente el alcance del desarrollo del software.
14. Usar diagramas como casos de uso y diagramas de actividad de procesos ayudan en la comunicación y entendimiento de las especificaciones a ser desarrollada.
15. La documentación es un tema de debate en Software Libre, dado que requiere recursos que compiten con los recursos de desarrollo de productos y es fundamental para garantizar la comunicación, validación y calidad de los productos. Debe ser concreta y concisa (asertiva), y con mecanismos de generación eficientes (a lo largo del ciclo de desarrollo utilizando por ejemplo historias de usuario) donde se logren sus objetivos dentro de un balance positivo de costo-beneficio.
16. Tecnologías para la ejecución de pruebas unitarias o modelos como el pair-programming o el peer-testing (programación y pruebas en parejas), ayudan a mantener una disciplina en el desarrollo y a aumentar la calidad del resultado del proyecto.
17. Agilidad y libertad son los principios que deben respetar las metodologías que soporten el desarrollo de SL. La Ingeniería del Software ofrece métodos y herramientas que otorgan un marco común de trabajo orientado al logro de la Calidad del Software. Un reto importante es incorporar la "Ingeniería" en el desarrollo del SL, manteniendo en primer lugar estos preceptos y contribuyendo además a la conformación de equipos de trabajo de alto desempeño que generen productos estables y etiquetados de excelente calidad.

sábado, 11 de octubre de 2008

Software Libre y de Código Abierto

Richard Stallman, considerado el filósofo del Software Libre, en su libro “Software Libre para una Sociedad Libre”, establece principios fundamentalmente éticos relacionados con los derechos y beneficios que estos conceptos traen a la sociedad: “La Libertad Uno es la libertad de ayudarte a ti mismo haciendo cambios que se ajusten a tus propias necesidades. La Libertad Dos es la libertad de ayudar a tus amigos distribuyendo copias. Y la Libertad Tres es la libertad de construir tu comunidad haciendo modificaciones y publicándolas para que las use otra gente. Si tienes todas estas libertades, el programa es software libre para ti” (Stallman, 2004, página 176).

Por otra parte, en 1998, Perens y Raymond fundaron la “Open Source Initiative”, una organización dedicada a la promoción del código abierto. Código abierto (en inglés open source) es el término con el que se conoce al software distribuido y desarrollado libremente. A diferencia del movimiento del Software Libre promovido por Stallman, las motivaciones del código abierto no son éticas; son fundamentalmente prácticas, y desde ese punto de vista completamente equivalentes.

“La filosofía del Open Source centra su atención en la premisa de que al compartir el código, el programa resultante tiende a ser de calidad superior al software propietario, es una visión meramente técnica. Por otro lado, el Software Libre funciona bajo un ideal: el software propietario, al no poder compartirse, es antiético dado que prohibir compartir entre seres humanos va en contra de las leyes naturales”. (Wikipedia, http://es.wikipedia.org/wiki/ C%C3%B3digo_abierto).

En resumen, la visión del software libre es principalmente ética mientras que la del código abierto es práctica.
Para evitar estas confusiones surge el concepto FOSS: Free and Open Source Software, es decir, Software Libre y de Código abierto, sin hacer distinciones entre sus diferencias, y también el de FLOSS, o F/LOSS, Free/Libre Open Source Software, para clarificar que free es de libre y no de gratis.
Para más información consulta: http://es.wikipedia.org/wiki/FOSS_-_FLOSS.

Mi perspectiva sobre el proceso de Aprendizaje

Los procesos de aprendizaje están condicionados por múltiples factores: a) sus participantes: docentes y estudiantes, con diferencias cognitivas, psicológicas, biológicas, culturales, sociales; b) factores ambientales: sociales, institucionales, académicos; c) características de los conocimientos y habilidades a ser desarrolladas: conceptuales, procedimentales, ejecuciones técnicas, procesos de toma de decisiones, resolución de problemas; d) complejidad del nivel de procesamiento de la información: bajo (asociaciones, memorizaciones), medio (clasificaciones, ejecución de procedimientos) y alto (solución de problemas no estructurados); e) etapa en la adquisición del conocimiento y nivel de formación del estudiante: inicial (novatos), avanzada (profesionales) o expertos (profesionales con experiencia); entre otros factores.

El diseñador instruccional debe disponer de las competencias que le permitan, conociendo las estrategias y técnicas propuestas por cada una de las teorías de aprendizaje, estudiar la situación específica del entorno en que se aplicará el mismo, y diseñar un estrategia académica ajustada a las particularidades de dicho contexto, donde seguramente hará uso de diferentes metodologías de enseñanza - aprendizaje.
Las tecnologías de información y comunicación están impulsando las estrategias de aprendizaje constructivista, dado que en las aulas virtuales, el docente juega un rol principalmente de moderador o tutor, y son los participantes los protagonistas, quienes con su activa participación van construyendo su aprendizaje a través de la lectura y reflexión de materiales didácticos, intervención en foros de discusión y uso de otros recursos multimedia que favorecen los procesos de construcción colectiva del conocimiento en lo que se ha denominado Comunidades de Aprendizaje.
Estos entornos de aprendizaje a distancia están exigiendo nuevas competencias en los diseñadores de instrucción, docentes y estudiantes. Los diseñadores instruccionales deben incluir dinámicas efectivas que faciliten el desarrollo y mantenimiento de un clima social favorable dentro del aula virtual; el docente debe monitorear la calidad de la comunicación, validando los niveles de apoyo, confianza, seguridad y respeto, es decir, debe contribuir al desarrollo de un ambiente social participativo, ameno y colaborativo; y el estudiante asumir la responsabilidad y compromiso que exigen estos ambientes, manteniéndose conectado con la frecuencia que exige la dinámica del curso y cumpliendo las normas y asignaciones por éste establecidas.-

miércoles, 10 de septiembre de 2008

Motivaciones del Software Libre

En el mundo del Software Libre es común el uso de términos como comunidades de usuarios y programadores, trabajo cooperativo y colaborativo, altruismo, derecho al conocimiento, y principalmente libertad, dado que Software Libre es el que “brinda libertad a los usuarios sobre su producto adquirido y por tanto, una vez obtenido, puede ser usado, copiado, estudiado, modificado y redistribuido libremente” (Wikipedia, http://es.wikipedia.org/wiki/C%C3%B3digo_libre).

Según González, Seoane y Robles (2003), existen dos grandes familias de motivaciones para el desarrollo de Software Libre: la motivación ética, que argumenta que el software es conocimiento y debe poder difundirse libremente (no permitirlo es una actitud antisocial) y la motivación pragmática, que argumenta ventajas técnicas y económicas.

Richard Stallman, considerado el filósofo del Software Libre, en su libro “Software Libre para una Sociedad Libre”, establece principios fundamentalmente éticos, relacionados son los derechos y beneficios que estos conceptos traen a la sociedad: “La Libertad Uno es la libertad de ayudarte a ti mismo haciendo cambios que se ajusten a tus propias necesidades. La Libertad Dos es la libertad de ayudar a tus amigos distribuyendo copias. Y la Libertad Tres es la libertad de construir tu comunidad haciendo modificaciones y publicándolas para que las use otra gente. Si tienes todas estas libertades, el programa es software libre para ti” (Stallman, 2004, página 176).

Por otra parte, en 1998, Perens y Raymond fundaron “Open Source Initiative”, una organización dedicada a la promoción del código abierto. Código abierto (en inglés open source) es el término con el que se conoce al software distribuido y desarrollado libremente. A diferencia del movimiento del Software Libre promovido por Stallman, las motivaciones del código abierto no son éticas; son fundamentalmente prácticas, y desde ese punto de vista completamente equivalentes.

“La filosofía del Open Source centra su atención en la premisa de que al compartir el código, el programa resultante tiende a ser de calidad superior al software propietario, es una visión meramente técnica. Por otro lado, el Software Libre funciona bajo un ideal: el software propietario, al no poder compartirse, es antiético dado que prohibir compartir entre seres humanos va en contra de las leyes naturales”. (Wikipedia, http://es.wikipedia.org/wiki/C%C3%B3digo_libre).

Barahona, Pascual y Robles (2003), abordan las consecuencias (ventajas y desventajas) del Software Libre desde diferentes perspectivas. Desde el punto de vista económico, alegan cambios requeridos en los modelos de negocio y financiación del desarrollo, soporte y mantenimiento de este tipo de software; alegan reducción en los costos gracias a la reutilización, trabajo colaborativo y el uso gratuito del medio (Internet) para su distribución y mercadeo. Desde la perspectiva de la calidad del software, la colaboración y la competencia contribuyen a la obtención de productos de mayor calidad. Finalmente, analizan las consecuencias según el destinatario, sea este el usuario final, el desarrollador, el integrador, el que proporciona mantenimiento y servicios, o la Administración Pública.

En este último punto, factores como la eliminación del monopolio del fabricante del software, la independencia de proveedores, el disponer del código fuente (no más cajas negras), y el garantizar la privacidad y seguridad de los datos, hacen del Software Libre la panacea para la mayoría de sus usuarios.

Línea de Tiempo del Software Libre


En Venezuela, el 23 de diciembre de 2004, se publicó en la gaceta oficial Nº 38.095, el Decreto 3390, el cual establece que “La Administración Pública Nacional empleará prioritariamente Software Libre desarrollado con Estándares Abiertos, en sus sistemas, proyectos y servicios informáticos”; encontrándose todas las empresas del Estado en procesos de migración y desarrollo de aplicaciones basadas en Software Libre. Adicionalmente, desde el año 2005 se lleva a cabo el Congreso Nacional del Software Libre (CNSL), evento patrocinado por el Ministerio del Poder Popular para la Ciencia y Tecnología, para promover el Software Libre en el país. Recientemente se llevó a cabo el 4CNSL.
Anexo se presentan 2 diapositivas que ilustran algunos de los eventos importantes en la historia del Software Libre.