domingo, 25 de abril de 2010

Respecto a la metodología MeRinde...

Leyendo algunos artículos de la metodología MeRinde me parece que es interesante, pero no he tenido la oportunidad de trabajar con ella y no la conozco muy bien, únicamente lo que sé ha sido porque me he documentado en Internet y por los aportes que he tenido la oportunidad de intercambiar con un grupo de compañeros que tienen los mismos intereses que yo en cuanto a la comunidad de Software Libre, pero menciono este tema, ya que me gustaría conocer experiencias de personas que han tenido la oportunidad de trabajar con ella, saber la opinión en cuanto a la metodología RUP y esta, ya que poseen mucha similitud. Estoy haciendo un estudio de dichas metodologías a ver que beneficios me aporta cada una de ellas y me gustaría saber tu opinión práctica al respecto.

Diferencias y similitudes entre enfoques metodológicos de hoy y del ayer..

Las diferencias observadas en los nuevos enfoques metodológico son varias, entre ellas se encuentran que actualmente: Se busca minimizar errores desde las etapas iniciales, en vez de esperar a que ocurran en la implantación y arreglarlos, se busca la manera de mantener documentado lo que se va realizando para facilitar su comprensión y posterior funcionamiento o mantenimiento. Se realiza un análisis completo de todo el proceso, estimando lo que pudiese existir a futuro e ideando posibles escenarios para prevenir cualquier inconveniente. Reduce costos en base a lo que necesita obtener, los recursos que maneja y los análisis previamente descritos. Por lo general, se mantiene mayor interacción con el cliente durante todo el proceso. En los enfoques metodológicos, cada vez más se hace presencia como algo indispensable el control de la calidad para cada uno de los proyectos que se lleven a cabo.

En cuanto a las similitudes, pues noto que aún se mantiene la razón de ser del enfoque metodológico, que es seguir una serie de pasos, de etapas sistemáticas para obtener un producto final adaptado a lo que se necesita, actualmente va más allá de lo que el cliente necesita, sino que se trata de abarcar todo el área que abarca la competencia en relación a este criterio en particular que se está trabajando.

Riesgos de la implementación de un SI basado en SL

Entre algunos de los riesgos que veo en la implementación de un sistema de información basado en Software Libre es que pudiese existir escasez de soporte o por lo contrario a un alto costo, ya que esto por lo general no es un acuerdo que se realiza antes de la adquisición del Software Libre. Existe un tema muy importante también que es la seguridad de la información y dependiendo de cómo estén establecidas las cualidades mínimas de seguridad de esto y de cómo se involucra el control de la información del usuario por parte del proveedor, podría llegar a ser un riesgo o no. Por otra parte, está el tema de la calidad del producto, esto no necesariamente es un riesgo, ya que con la existencia de tantas metodologías, formas de trabajo, teorías de calidad, desarrollos libres que incorporan calidad este riesgo es minimizado, ya que por lo general, todo producto terminado en la actualidad posee un alto índice de calidad y esto es necesario para poder competir en este mundo de oportunidades tecnológicas que día a día nos invaden con excelentes innovaciones.

Selección de metodología en una gestión de proyecto

Al momento de gestionar un proyecto, lo primero que debe hacer la empresa, la persona, el comité o la comunidad que esté desarrollando el proyecto, es analizar sus condiciones y preguntarse que desea obtener, cuando lo desea obtener, a que costo, con que recursos cuenta para lograr lo propuesto, entre otros detalles lo que le harán decidir que metodología emplear para sus desarrollos de software internos, bien sea una existente (ya que hay una gran gama hasta la fecha) o una mezcla de metodologías del mercado con alguna variación propia para adaptarlo a sus necesidades. Es importante que se tome muy en cuenta este análisis ya que en gran parte dependerá del éxito o fracaso del producto obtenido.

Por otra parte, pienso que en una organización pudiesen existir diferentes tipos de metodologías para el desarrollo de sus software ya que este debe adaptarse a las especificaciones de cada uno de los proyectos que se llevan a cabo, quizás uno de ellos necesita mayores recursos porque debe salir en el menor tiempo posible, mientras que otros requieren de una metodología más analítica y no necesita ser entregado a corto plazo, entre otros detalles que marcan la selección correcta de la metodología a implementar.

Experiencias propias en metodologías de desarrollo de software

En cuanto a las metodologías de desarrollo de software, he tenido la oportunidad de llevar a la práctica dos de ellas. La metodología XP la utilicé en mi tesis mezclada con otra en donde nos facilitó la culminación de dicho trabajo de grado, ya que se contaba con poco tiempo y se necesita obtener el producto con ciertas funcionalidades como requisitos mínimos del cliente en una primera etapa, y esto nos conlleva a buscar la manera de minimizar la taza de defectos y los retrasos en la planificación, así como la participación de todos los involucrados en el proyecto. Dentro de mi experiencia como programador, me parece indispensable que exista la retroalimentación continua entre el cliente, los usuarios y los desarrolladores del software, ya que esto permite aclarar las especificaciones y a medida que avanza el proyecto permite ver las cosas con mayor claridad en ambos lados del proyecto.

Por otra parte, he tenido la oportunidad de trabajar con SCRUM en desarrollos dentro del trabajo, aunque muy poco, pero dentro de mi experiencia, esta metodología es muy productiva ya que se inicialmente se realiza una programación basado en todos los puntos de vista del producto (lo que desea el cliente, en el tiempo que lo quisiera el cliente, lo que pueden lograr los desarrolladores y lo que piensa el gestor del proyecto analizando todos estos puntos), posteriormente, esa planificación es chequeada continuamente ya que se deben realizar reuniones diarias donde se mencione que se ha logrado hasta el momento.
Esta última metodología se pudiese aplicar para cuando se tiene mayor tiempo para desarrollar mientras que la otra es para corto plazo generalmente, ya que quizás las reuniones diarias para un proyecto tan corto no son beneficiosas. Pero existen muchísimas metodologías y todas tienen sus ventajas y desventajas, todo depende de lo que se desee desarrollar, como, en cuanto tiempo, etc, etc.

Sistema de Control de Incidencias - Mantis BT


En mi experiencia práctica utilizo un sistema de control de incidencias, el cual los invito a indagar más sobre el a ver si les parece interesante.

Hablo de sistema MBT, que significa Mantis Bug Tracker por sus siglas en inglés, que como mencioné anteriormente, es un sistema para el control de incidencia, este sistema es libre, puede descargarse gratuitamente desde la página http://www.mantisbt.org/ y es completo. Funciona bajo casi cualquier navegador web, y trabaja con tres base de datos distintas: MySQL, MS SQL y PostgreSQL. Este software web, lo he utilizado por dos años y permite hacer seguimiento de las incidencias presentas, tanto por los desarrolladores como por el líder, te envía toda modificación realizada vía correo electrónico de todas las modificaciones ocurridas en todos los proyectos en los cuales se están incluido, bien sea como espectador, como desarrollador, como QA o como líder del proyecto. Dentro de mi experiencia, de verdad se los recomiendo.

¿Qué técnicas nos ayudan a estimar el desarrollo del SL?

La técnica que conozco y he utilizando para la estimación de un desarrollo es la NUCP que es un modelo estadístico formal basado en el concepto de puntos normalizados de casos de uso. Este modelo permite, de manera muy sencilla, realizar una estimación inicial del esfuerzo asociado a un proyecto a partir de los requisitos funcionales del mismo (los casos de uso), así como realizar ajustes consensuados en cuanto sea necesario. Esto es importante ya que en estos casos de uso se detalla la información de los actores involucrados en los procesos así como la funcionalidad del sistema y el tipo de interacción entre cada uno (participación de un actor en el caso de uso, inclusión del comportamiento de un escenario en otro, relación de dependencia, entre otros).

¿Cuáles son los factores claves para gestionar exitosamente proyectos de SL?

Para tener una gestión exitosa en proyectos de Software Libre es indispensable, como menciona Yomaira Montilla, el uso de herramientas de interacción entre los involucrados en dicho proyecto, donde se manejarán incidencias, aspectos importantes y cualquier otro detalle encontrado en el desarrollo. La comunicación es súper importante pero también es importante tener una buena definición del proyecto, de que se quiere obtener y a que plazo se desea obtener, si se definen etapas de desarrollo, se deben especificar cual es el alcance de cada una de ellas, a pesar que en el tema del Software Libre no es tan sencillo gestionar estos detalles por la esencia de su formación, pero es importante tomar en cuanta la gestión de calidad, gestión de riesgo, el seguimiento del proyecto, entre otros aspectos importantes. Esto se hace indispensable por el mundo tecnológico tan cambiante que existe, donde lo que es el boom hoy, ya en 1 año pasó a ser parte de la historia. Si los proyectos de Software Libre no se gestionan de buena manera, no se podrá tener éxito en los resultados.

¿Qué aportes da la Ingeniería del Software al desarrollo de aplicaciones basadas en SL?

La Ingeniería del Software genera diferentes aportes al desarrollo de Software Libre ya que permite mantener organización dentro de la planificación y no limita la utilización de herramientas, la selección de lenguajes, recursos, metodologías ni ningún aspecto posible a seleccionar dentro del proyecto.

Como en el desarrollo del software libre puede participar cualquier persona, no tiene limitantes en cuanto a recursos ni a funcionalidades, ya que la misma puede ir variando de momento a momento, pienso que aquí la ingeniería de software toma un papel importante, ya que permite encontrar 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, y para que todo esto se realiza con trabajo en equipo, ya que en esto están basados tanto la Ingeniería del Software como el Software Libre.

Filosofía del Software...

Es importante ver lo que es la filosofía del software, que es libertad de compartir, no solo en el Software Libre sino en la vida como tal, en todo lo que hacemos día a día, en todos los ámbitos de nuestra vida, ya que eso no elimina la competitividad sino que la redirecciona hacia otros aspectos que van más relacionados con la filosofía de calidad de cada organización, así como la de cada individuo, en buscar hacer mejor las cosas cada día y de obtener mejores resultados con menor costo, bien sea de tiempo, de dinero, de recursos, entre otros.

Es importante que esta filosofía vaya inmerso en nuestros valores.

FSFE


Free Software Foundation Europa (FSFE) es una organización sin fines de lucro y en algunos países la organización de caridad dedicada a Software Libre.


De la FSFE lo que me parece más relevante es que mencionan que “las libertades de usar, estudiar, compartir y mejorar el software son fundamentales para garantizar la igualdad de participación en la era de la información”, y efectivamente, pienso que estos fundamentos toman un gran peso porque mantener esa igualdad de participación es lo que permitirá generar mejores conocimientos de los más expertos, sin restricción alguna. En cuanto a la FSFLA habla de “defender los derechos y las libertades de usuarios y desarrolladores de software”. Básicamente, estos portales se enfocan en transmitir la defensa de la libertad en pleno.


Por otra parte, los portales de Software Libre por lo general incentivan a involucrarte en este mundo, a aportar ideas para generar mejores conocimientos e ir creciendo cada vez más en el mundo tecnológico.

miércoles, 14 de abril de 2010

Mapa Conceptual del Software Libre


Este mapa conceptual les ayudará a visualizar de manera simplicada lo que engloba el "Software Libre". Esta es una estrategia de aprendizaje jerarquizada y que propone un alto impacto visual.
Ahora, propongo una pregunta a ver quien se anima a responderla:

¿Está usted de acuerdo con que el software tenga propietarios o sea libre?
Particularmente pienso que deben coexistir ambas posibilidades en el mercado, software propietarios y software libres ya que se le debe dar la oportunidad de elegir al usuario final o cliente del software, basado en sus necesidades, sus posibilidades monetarias, sus creencias, experiencias o cualquier criterio que posea. Lo importante de esto, es no imponerle algo o truncarle la posibilidad de selección al usuario.

Siendo un poco extremistas, supongamos que hoy se acaba por completo el mundo del “software propietario”. Pienso que entre unas de las consecuencias que ocasionaría esta situación estarían: muchas empresas quebrarían, muchos programadores o afines quedarían sin empleo y hasta quizás se forjaría un rebullicio, por lo cual siento que la NO existencia de este mundo, afectaría a un grupo considerable de personas, y es por ello que pienso que ambos mundos pudiesen coexistir.

Software Libre y sus relaciones...

EL Software Libre nació como defensa al acoso a los usuarios del software, proclamando por la libertad de expresión y de información. Actualmente, está tomando otra forma, ya que está enfocándose también hacia lo económico, y se está visualizando como estrategía empresarial.

Si lo vemos desde el punto de vista ético, el software es conocimiento y por ende debe poderse difundir sin inconveniente alguno. Además, que de esta manera, las modificaciones al software pueden venir dadas por cualquier persona interesada en el tema por lo que permite la libertad de expresión y la variabilidad de conocimientos, que en muchas ocasiones vendría siendo un beneficio ya que al ser de escrutinio público, se podría pensar en que se reducirían las posibilidad de errores. Este aspecto es apoyado por la Free Software Foundation (FSF)

Si lo vemos desde el punto de vista pragmático, como lo hace notar la filosofía del Open Source, que parte de la premisa de que al compartir el código, el programa resultante tiende a ser de calidad superior al software propietario, como hacía mención en el párrafo anterior. Por otra parte, si el software no puede compartirse, podemos decir que es un comportamiento que va en contra de la ética dado que prohibir compartir entre seres humanos va en contra de las leyes naturales.
En pocas palabras, para mí el software libre significa libertad a los usuarios sobre su producto adquirido, esto quiere decir que posterior a su adquisición, este puede ser usado, copiado, estudiado, cambiado y redistribuido sin restricción alguna.

Según GNU Operating System:

El software libre es una cuestión de libertad, no de precio. Para entender el concepto, debería pensar en libre como en libre expresión, no como en barra libre.

El software libre es una cuestión de la libertad de los usuarios de ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. Más precisamente, significa que los usuarios de programas tienen las cuatro libertades esenciales.

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

martes, 13 de abril de 2010

Según Wikipedia:
"El software libre (en inglés free software, aunque en realidad esta denominación también puede significar gratis, y no necesariamente libre, por lo que se utiliza el hispanismo libre software también en inglés) es la denominación del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente."