domingo, 18 de abril de 2010

Algo sobre Metodologías Ágiles

En febrero de 2001, tras una reunión celebrada en Utah-EEUU, nace el término “ágil” aplicado al desarrollo de software. En esta reunión participan un grupo de 17 expertos de la industria del software, incluyendo algunos de los creadores o impulsores de metodologías de software. Su objetivo fue esbozar los valores y principios que deberían permitir a los equipos desarrollar software rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto.

Se pretendía ofrecer una alternativa a los procesos de desarrollo de software tradicionales, caracterizados por ser rígidos y dirigidos por la documentación que se genera en cada una de las actividades desarrolladas.
Tras esta reunión se creó The Agile Alliance3, una organización, sin ánimo de lucro, dedicada a promover los conceptos relacionados con el desarrollo ágil de software y ayudar a las organizaciones para que adopten dichos conceptos. El punto de partida es fue el Manifiesto Ágil, un documento que resume la filosofía ágil (http://es.wikipedia.org/wiki/Manifiesto_%C3%A1gil).

Aunque los creadores e impulsores de las metodologías ágiles más populares han suscrito el manifiesto ágil y coinciden con los principios enunciados en dicho manifiesto, cada metodología tiene características propias y hace hincapié en algunos aspectos más específicos. A continuación se resumen algunas metodologías ágiles. La mayoría de ellas ya estaban siendo utilizadas con éxito en proyectos reales pero les faltaba una mayor difusión y reconocimiento.

Extreme Programming (XP)  Metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo técnico.

SCRUM  Desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle. Define un marco para la gestión de proyectos, que se ha utilizado con éxito durante los últimos 10 años. Está especialmente indicada para proyectos con un rápido cambio de requisitos. Sus principales características se pueden resumir en dos. El desarrollo de software se realiza mediante iteraciones, denominadas sprints, con una duración de 30 días. El resultado de cada sprint es un incremento ejecutable que se muestra al cliente. La segunda característica importante son las reuniones a lo largo proyecto, entre ellas destaca la reunión diaria de 15 minutos del equipo de desarrollo para coordinación e integración.

Crystal Methodologies Se trata de un conjunto de metodologías para el desarrollo de software caracterizadas por estar centradas en las personas que componen el equipo y la reducción al máximo del número de artefactos producidos. Han sido desarrolladas por Alistair Cockburn. El desarrollo de software se considera un juego cooperativo de invención y comunicación, limitado por los recursos a utilizar. El equipo de desarrollo es un factor clave, por lo que se deben invertir esfuerzos en mejorar sus habilidades y destrezas, así como tener políticas de trabajo en equipo definidas. Estas políticas dependerán del tamaño del equipo, estableciéndose una clasificación por colores, por ejemplo Crystal Clear (3 a 8 miembros) y Crystal Orange (25 a 50 miembros).

Dynamic Systems Development Method (DSDM) Define el marco para desarrollar un proceso de producción de software. Nace en 1994 con el objetivo de crear una metodología RAD unificada. Sus principales características son: es un proceso iterativo e incremental y el equipo de desarrollo y el usuario trabajan juntos. Propone cinco fases: estudio viabilidad, estudio del negocio, modelado funcional, diseño y construcción, y finalmente implementación. Las tres últimas son iterativas, además de existir realimentación a todas las fases.

Adaptive Software Development (ASD) Su impulsor es Jim Highsmith. Sus principales características son: iterativo, orientado a los componentes software más que a las tareas y tolerante a los cambios. El ciclo de vida que propone tiene tres fases esenciales: especulación, colaboración y aprendizaje. En la primera de ellas se inicia el proyecto y se planifican las características del software; en la segunda desarrollan las características y finalmente en la tercera se revisa su calidad, y se entrega al cliente. La revisión de los componentes sirve para aprender de los errores y volver a iniciar el ciclo de desarrollo.

Feature -Driven Development (FDD) Define un proceso iterativo que consta de 5 pasos. Las iteraciones son cortas (hasta 2 semanas). Se centra en las fases de diseño e implementación del sistema partiendo de una lista de características que debe reunir el software. Sus impulsores son Jeff De Luca y Peter Coad.

Lean Development  (LD) Definida por Bob Charette.s a partir de su experiencia en proyectos con la industria japonesa del automóvil en los años 80 y utilizada en numerosos proyectos de telecomunicaciones en Europa. En LD, los cambios se consideran riesgos,  pero si se manejan adecuadamente se pueden convertir en oportunidades que mejoren la productividad del cliente. Su principal característica es introducir un mecanismo para implementar dichos cambios.

lunes, 12 de abril de 2010

Páginas principales de Software Libre



Termino Código Abierto en http://es.wikipedia.org/wiki/C%C3%B3digo_abierto

"Es el término con el que se conoce al software distribuido y desarrollado libremente. El código abierto tiene un punto de vista más orientado a los beneficios prácticos de compartir el código que a las cuestiones morales y/o filosóficas las cuales destacan en el llamado software libre."


Termino Software Libre en http://es.wikipedia.org/wiki/Portal:Software_libre

"Es el software que, una vez obtenido, puede ser usado, copiado, estudiado, modificado y redistribuido libremente. El software libre suele estar disponible gratuitamente en Internet, o a precio del coste de la distribución a través de otros medios; sin embargo no es obligatorio que sea así y, aunque conserve su carácter de libre, puede ser vendido comercialmente."



Fundación para el Software Libre Europa: http://www.fsfeurope.org/index.es.html

“La Fundación para el Software Libre en Europa (FSFE) es una organización sin ánimo de lucro y, en algunos países, una organización benéfica dedicada al Software Libre. La FSFE sostiene 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. Trabajamos para crear comprensión general y apoyo a la libertad del software en la política, el derecho y la sociedad en general. También promovemos el desarrollo de tecnologías como el sistema operativo GNU/Linux, que proporciona estas libertades a todos los participantes en la sociedad digital.”


Fundación Software Libre América Latina: http://www.fsfla.org/svnwiki/

“Nuestra misión es defender los derechos y las libertades de usuarios y desarrolladores de software, luchar por tu libertad de ejecutar el software que uses para cualquier propósito que quieras, de estudiar su código fuente si quieres y adaptarlo para que haga lo que quieras, de copiarlo, distribuirlo y publicarlo cuando quieras, con o sin mejorías que quizá has hecho, de manera que tú, nosotros y todos podamos usar computadoras en libertad.”

Industria venezolana del Software Libre: http://www.softwarelibre.gob.ve/invesol/

“Este portal permite a unidades productivas, entiéndase esto como cooperativas  o pequeñas empresas la oportunidad de postularse  a desarrollos tecnológicos, como compra de equipos, capacitación, desarrollo de aplicaciones etc.”



GNU Operating System en http://www.gnu.org/

“El «Software Libre» es un asunto de libertad, no de precio. Para entender el concepto, debe pensarse en «libre» como en «libertad de expresión», no como en «cerveza gratis».”

Software Libre ¿socialismo y/o capitalismo?

El segundo foro inicio con los temas referentes a los principios del Software Libre (SL) desde la perspectiva de su principal filósofo y promotor Richard Stallman, así como, los aspectos éticos, sociales y económicos asociados a la industria del software. Pero el debate se centro en la pregunta ¿el SL es socialismo y/o capitalismo?

Personalmente opiné que eL SL tiene un enfoque muy socialista ya que es una vía para darle poder a las comunidades basado en el acceso al conocimiento, “para que con inteligencia social se construya una sociedad más próspera y con más beneficio para todos”, contrario a las sociedades herederas del capitalismo que secuestran y privatizan el conocimiento. Pero luego se me genera la duda cuando me pregunto. ¿Si la sociedad no es socialmente inteligente para beneficiarse con esto, la ganancia no estaría monopolizada en los soporte a los programas de SL o servicios a las empresas? No estaríamos hablando de capitalismo también?

Otros opinaron que el SL posee algo de ambos mundo (el capitalista y el socialista), ya que  al ser "libre" le permite a los desarrolladores publicarlo/venderlo al precio que quieran (recordemos que el software libre no es necesariamente gratis), y por tal motivo se pueden aplicar las reglas de oferta/demanda del mercado capitalista, así mismo en muchos casos, este tipo de software depende de una comunidad, del aporte de cada uno de los integrantes de la misma, es de libre distribución, y por tal motivo puede ser visto como socialista también, es decir, todo depende del punto de vista con que se este tratando el tema. Personalmente no considero esto como un defecto,  porque el SL puede tomar lo mejor de ambos sistemas y lograr un punto medio donde todos salgamos beneficiados.

Particularmente, los invito a ver el Video, El nombre correcto es GNU con Linux por Richard Stallman en la siguiente ruta: y ha establecer su propia opinión.

martes, 6 de abril de 2010

Mapas Conceptuales del Software Libre

En la primera sesión debatimos acerca de la definición del Software Libre, reconociendo las 4 libertades del Software Libre, identificamos las motivaciones éticas y pragmáticas del Software Libre, así como otras razones que mueven a las personas a trabajar en Software Libre, enunciamos las consecuencias de la Libertad del Software para el desarrollador, el usuario final, el integrador, el personal de operaciones y mantenimiento, y para la Administración Pública e identificamos los hechos relevantes que han marcado la evolución del Software Libre a través del tiempo. 

Para concluir elaboramos un mapa conceptual el cual quiero compartir en esta publicación, ademas de otro mapa ubicado en la web.






Elaborado por: Anyelin Calderon (2010)

Otro Mapa Conceptual

¿Carne o Pescado?

Antes de comenzar los temas de Software Libre me gustaría compartir esta metafora que llamó mucho mi atención (Fuente: Fenollosa, C. - La metáfora del Software Libre):

Imagina que entras en un restaurante para comer. El camarero, antes de mostrarte la carta, te sirve un plato de estofado. El plato tiene buena pinta; cuando miras a tu alrededor ves que todo el mundo está comiendo estofado.
Cuando lo pruebas, notas que su sabor es horrible. No parece ternera ni cerdo. Pero todos siguen con su estofado, así que supones que tendrás que comértelo de todos modos.

Ya llevas la mitad del plato cuando entra otra persona, que se sienta en la mesa de al lado. Le sirven estofado, pero devuelve el plato. Pide lenguado en salsa.

Extrañado, te preguntas si el pescado también será tan malo como el estofado. Ves que esa persona tarda alrededor de un cuarto de hora en quitar todas las espinas y limpiar la pieza, pero la comida parece gustarle. Un señor que hay sentado a tu lado se da cuenta de que estás observando al chico del pescado, y te comenta "No entiendo como puede comer pescado. ¡Pierde todo el tiempo tan sólo para limpiarlo!". El chico se da cuenta y le contesta "Pero merece la pena la espera".

Además, oyes conversaciones en las que se dice que alguno de los que comió estofado el día anterior está con gastroenteritis, posiblemente por comer carne en mal estado. Mientras la persona del pescado está acabando, llama al cocinero para explicarle que el plato estaba exquisito, pero con un poco de zumo de limón hubiera quedado más jugoso. Decides llamar tú también al cocinero para comentarle que el estofado es asqueroso, pero te responde que el hecho de comer estofado te prohíbe preguntar de dónde salió la carne, y no puedes cambiar las patatas por champiñones en caso de que no te gusten. "¿Cómo es posible que no pueda saber qué animal estoy comiendo?", le dices. Por lo visto, la empresa que distribuye la carne guarda celosa ese secreto, aunque garantiza que es de calidad y apta para el consumo humano.

La persona del pescado se dispone a marchar, y se va sin pagar la cuenta. Preguntas al camarero, y te dice que el pescado es gratuito, pero el estofado hay que pagarlo. El señor de antes te comenta "Si es gratis, seguro que no es de fiar", aunque piensas si realmente algo puede estar más malo que la carne que te acabas de comer. Pagas una cantidad exorbitada por un estofado malísimo, y marchas del restaurante. En tu camino a casa, ves que en otro restaurante el pescado cuesta dinero, aunque ni la mitad que la carne. El camarero te dice que el pescado es el mismo, pero esta vez lo sirven con extra de guarnición si quieres. Si no, también es gratis.

Ala semana siguiente, vuelves al mismo restaurante. Piensas si probar el pescado o seguir con la carne. Nuevamente, todos los comensales han pedido estofado. En una mesa encuentras al chico de la semana pasada, en lugar de lenguado ha pedido merluza al ajillo. Te invita a sentarte a su lado

Tomas asiento, y el camarero aparece con un plato de estofado. Qué asco. Otra persona te dice en voz baja "Recuerda que si comes pescado no te sirven vino rosado". El chico que está sentado a tu derecha está bebiendo vino blanco, así que tampoco notarás mucho la diferencia. Se dirige a ti "¿Quieres pescado? Si no te ves capaz de limpiarlo, te puedo echar una mano. Está buenísimo. Si lo pruebas y no te gusta, no pasa nada, siempre podrás volver al estofado". Se ríe y añade "¿De verdad te gusta? Es malísimo".

Empiezas a dudar, y recuerdas lo que te dijeron la semana pasada. Le preguntas acerca de la procedencia del pescado, podría ser que estuviera en mal estado. Te contesta que ese pescado es del día, que puedes ir tú mismo a la lonja a comprobar como el dueño del restaurante lo adquiere todos los días. Nadie te garantiza que sea bueno, pero resulta que sí lo es. Tú mismo puedes comprobarlo. Te comenta que los grandes gourmets siempre piden pescado para comer. Como necesitan cierta garantía de calidad por su estatus social, pagan a un notario para que vaya todos los días al puerto a comprobar que, efectivamente, el pescado es fresco. El resto de comensales se aprovechan de esto, pues el notario no sólo garantiza el pescado de los más exigentes, sino todos los palés que pasan por la lonja.

Además añade "¿O es que acaso puedes comprobar la procedencia de la carne? Sabes, cualquiera puede pescar su propio pescado y comerlo como más le guste. En cambio, la empresa que controla la carne no permite cocinarlo de maneras que no sean las que ellos quieren. Ni siquiera dicen qué animal estás comiendo, ¿Te parece normal? ¿Si su carne es tan buena, qué tienen que esconder?".

"Una vez que te has acostumbrado a limpiar el pescado de espinas, aunque tardes un poquito más en comer, te quedas más a gusto. Insisto, te echo una mano hasta que te acostumbres. No entiendo cómo puede haber gente que pague por esa ¿carne?". Le recuerdas que mucha gente marcha sin pagar. "Sí, claro que puedes irte sin pagar. Pero pudiendo comer un buen pescado, no comería ese estofado ni aunque me lo regalasen. Y si lo pruebas lo entenderás".

¿Qué elegirías para comer?

lunes, 5 de abril de 2010

Nuevamente en el aula virtual


Nuevamente en el aula virtual es uno de los primeros artículos que escribo después de tanto tiempo (aparte de actualizar mi diseño) ya que de nuevo y sinceramente retomo mi blog para actualizarlo con información de utilidad para cualquier cibernauta que transite por mi pequeño espacio.

Esta vez la materia que me encuentro cursando se denomina DESARROLLO DE APLICACIONES EN SOFTWARE LIBRE, que aunque suena como que vamos a desarrollar algo no es así, la idea es debatir sobre temas de software libre tales como: las definiciones, motivaciones y consecuencias del Software Libre, la filosofía del movimiento del Software Libre, la estructura general de las metodologías de desarrollo de Software Libre, los modelos de las aplicaciones informáticas orientadas a objetos, las técnicas y herramientas más utilizadas para el control de calidad y pruebas de software usadas en la ingeniería del software y en entornos libres, los aspectos legales asociados a los derechos de propiedad intelectual y el licenciamiento del Software Libre, el estado del arte del Software Libre en Venezuela, así como, realizaremos estudios de factibilidad para la migración de plataformas a Software Libre