miércoles, 13 de agosto de 2014

Ingeniería de Software Libre

 Ingeniería de Software Libre


       La ingeniería de software ha proporcionado al mundo de desarrollo de software, un modelo a seguir para obtener de forma disciplinada productos de software de calidad.
           La necesidad de que existiese esta disciplina se presento porque el mundo de desarrollo de software creció rápidamente y los proyectos fracasaban, consumiendo mucho más tiempo y recurso del que se estimaba originalmente, rebasaban los presupuestos, al terminar no resolvían la situación o los requerimientos reales, entre otras cosas; al surgir la ingeniería de software nace  con ella diversos paradigmas o metodologías que de alguna manera proponen un orden en el proceso, para garantizar de una forma menos empírica el desarrollo y aumentar así las probabilidades de éxito.
En el camino nace la necesidad de proyectos de software libre lo que presenta un reto mayor, se requiere de mucha más disciplina, de que todo este mucho más claro y engranado para asegurar el éxito de los proyectos, ya que el equipo de desarrollo trabaja distribuido alrededor del mundo y el trabajo es netamente colaborativo, nadie debe invertir mucho tiempo en comprender como es que deben funcionar las cosas, sino que por el contrario ese tiempo se dedique a producir y colaborar, por lo que se requiere entonces de mecanismos dinámicos fáciles de aplicar y de entender. El SL se distingue por la creación, desempeño y evolución de los equipos de trabajo que se conforman alrededor de las comunidades, así como la forma cómo manejan el liderazgo, la motivación y el reconocimiento.
La ingeniería del software permite crear un orden dentro de un desarrollo de software libre, permite definir una metodología, herramientas y técnicas que se ajusten al proyecto. Va a lograr que se mida la calidad del desarrollo de forma ordenada, logra que las personas que colaboren dentro del proyecto puedan comprender cuál es su rol y como alcanzar el objetivo final.

       Desarrollar un software de calidad depende de muchas etapas y actividades, donde juega un papel fundamental para el éxito del producto, elegir la metodología que mejor se adapte a las particularidades del proyecto y del equipo que lo llevara a cabo. El rol fundamental de las metodologías es dar un patrón que permita guiar las etapas y actividades necesarias para encaminar de forma correcta cualquier proyecto de este tipo minimizando de alguna manera los factores que pueden llevar al fracaso los proyectos y por consecuencia los productos.

          Existen dos grandes enfoques en lo que respecta a las metodologías de desarrollo, el tradicional y el ágil, el primero pensado en una serie de pasos y etapas que generan el uso exhaustivo de documentación durante todo el ciclo del proyecto mientras que el segundo ponen vital importancia en la capacidad de respuesta a los cambios, la confianza en las habilidades del equipo y al mantener una buena relación con el cliente.
          
             Entre las principales metodologías tradicionales se tienen las conocidas RUP (RATIONAL UNIFIED PROCESS), MSF (MICROSOFT SOLUTION FRAMEWORK), como conocemos metodologias en cascada, en estrella entre otras, que centran su atención en llevar una documentación exhaustiva de todo el proyecto y en cumplir con un plan de proyecto, definido todo esto, en la fase inicial del desarrollo del proyecto. Una de las características importantes dentro de este enfoque es el alto costo de implementar un cambio y la de no ofrecer una buena solución para proyectos donde el  entorno es volátil. El enfoque ágil, nace como respuesta a los problemas que presenta el enfoque tradicional, basándose en dos aspectos puntuales, el retrasar las decisiones y la planificación adaptativa; permitiendo potenciar aún  más el desarrollo de software a gran escala.

     Metodologías de Desarrollo Ágiles Vs. Metodologías Tradicionales

       Para el desarrollo de software, se requiere de diversos elementos que agrupados hacen que el desarrollo de software sea o no exitoso.

       Para esto existen las metodologías tradicionales que se modificaron para poder aplicarlas  al desarrollo de software, aunque durante mucho tiempo fueron la única solución al desarrollo, hizo estas metodologías poco flexibles y muy cuadriculadas. Estas consistían en una serie fundamentos y conceptos aplicados al desarrollo de software, documentación, planificación y procesos. (Plantillas, técnicas de administración, revisiones, etc.)

         Ante las dificultades de las metodologías tradicionales referentes al tiempo y flexibilidad, aparecen las metodologías ágiles como una respuesta metodológica, especialmente porque están orientadas a proyectos pequeños, constituyen una solución a la medida del entorno, simplificando las prácticas y asegurando la calidad del producto.


        El término ágil, nace en febrero de 2001 en una reunión en Utah (EEUU), aplicado al desarrollo de software, su objetivo era idear los valores y principios que permitirían a los equipos de desarrollo crear software rápidamente, respondiendo a los cambios surgidos a lo largo del proyecto, ofreciendo una alternativa a los procesos tradicionales. En dicha reunión se creó The Agile Alliance, organización, sin ánimo de lucro, que promueve los conceptos relacionados con el desarrollo ágil de software, apoyando las organizaciones para que adopten dichos conceptos.
 

Según el Manifiesto ágil, se valora al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas, desarrollar software que funciona (más que conseguir una buena documentación),  la colaboración con el cliente (más que la negociación mediante contrato),  respuesta a los cambios (más que seguir rigurosamente algún plan).

Entre ellas podemos Mencionar:

La metodología ágil XP:

      Una de las metodologías que más esta difundiéndose en la actualidad, es la Programación Extrema (XP, Extreme Programming). Esta metodología ágil está enfocada a fortalecer las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, un buen clima laboral y preocupándose por el aprendizaje de los desarrolladores. Kent Beck, es el padre de XP (1999), esta metodología se basa en la retroalimentación continua entre el equipo de desarrollo y el cliente, simplificando las soluciones implementadas y disposición para los cambios; Adecuada para proyectos con requisitos imprecisos, cambiantes y con alto riesgo técnico.

SCRUM: es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto. Los roles principales en Scrum son el ScrumMaster, que mantiene los procesos y trabaja de forma similar al director de proyecto, el ProductOwner, que representa a los stakeholders (interesados externos o internos), y el Team que incluye a los desarrolladores. 

       Como hemos mencionado desarrollar un software de calidad depende de muchas etapas y actividades, donde juega un papel fundamental para el éxito del producto, elegir la metodología que mejor se adapte así como el empleo de las mejores herramientas para el diseño e implementación de la metodología, es donde entran las llamadas herramientas CASE (Computer Aided Software Engineering), Ingeniería de Software Asistida por Computadora, son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero. Estas herramientas pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costos, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras.

        Como nuestro tema es software libre mencionemos algunas de las herramientas que mejor se adaptan al desarrollo en SL:         Los dearrolladores Web o Web Masters necesitan contar con ciertas herramientas, para su análisis, diseño o simplemente para documentación de sus diagramas UML, contamos con 3 herramientas de Software Libre para UML.

       
Umbrello: Sencilla e intuitiva, se pueden crear diferentes tipos de diagramas UML, pero no todos los tipos, los mas escenciales.

Dia: Es un editor de diagramas, no solo UML, también cuenta con una extensa variedad de tipos de diagramas. Con un manejo de ventanas para las herramientas de trabajo y el espacio de trabajo muy similar a Gimp al utilizar ventanas independientes.
Cuenta con un gran número de extensiones par aexportar los diagramas, desde extensiones de imágenes hasta extensiones xml.

ArgoUML: Herramienta hecha en Java, de estas 3 herramientas cuenta con una mejor interfaz, más atractiva al usuario, sin embargo, su debilidad son las limitantes de guardar con extenciones .zargo .uml .xmi solamente.
ArgoUML contiene funciones avanzadas en las etapas de diseño y modelación de software. Como características fundamentales:
 - Es modular y extensible.
 - Soporta todas las especificaciones UML.
 - Integrado con la WEB.
 - Brinda una excelente ayuda.

No hay comentarios:

Publicar un comentario