Mostrando las entradas con la etiqueta ingeniería de software. Mostrar todas las entradas
Mostrando las entradas con la etiqueta ingeniería de software. Mostrar todas las entradas

Herramientas para modelar UML

Son muchas las herramientas llamadas CASE que apoyan el modelado bajo las reglas que dicta UML en sus diversas versiones, tanto privativas como libres, como el tema que nos ocupa ahora es el de software libre, hubo una compañera de mi comunidad de aprendizaje que compartió con nosotros un link en donde comparan diferentes herramientas de este tipo y ahora se los comparto también por acá. http://www.diatel.upm.es/malvarez/UML/Comparativa.html

Reflexionando acerca de UML y algo más

Hay quienes opinan que la notación UML no sirve para nada, hay quienes dicen que su propósito es netamente comercial y que por ello fue creada, otros opinan que es muy pesada e inútil, en fin las criticas son diversas así como también las opiniones favorable, estuve revisando la argumentación de algunas personas en internet y contrastándolas con mi experiencia profesional y la opinión de muchos de mis compañeros en mi comunidad de aprendizaje llegue a la conclusión de que en primer lugar no podemos perder de vista que en esta área de conocimiento (sistemas de información, ingeniería de software, computación, informática…) aún no existe nada perfecto y que se ajuste a los gustos, preferencias o paradigmas de todos, es sumamente complicado complacer a todo el mundo; lo que sí es posible, es conciliar para estandarizar y utilizar lo mejor que se ofrece en este campo. Con esto lo quiero decir es que aún no existe la panacea que viene a resolver todos nuestros problemas o necesidades, pero que hay muchas cosas que son valiosas y ampliamente utilizadas y que para comunicarnos efectivamente es conveniente utilizarlas lo mejor posible.

Si hay algo que no se ajusta a tus necesidades, quizás una combinación de elementos te puede ayudar a expresar mejor la idea y si aún así no es suficiente, siempre se puede proponer algo mejor. Generalmente en esta área somos lo suficientemente flexibles para aceptar cosas que nos apoyen de forma efectiva en nuestro trabajo y que sea tan sencillo de entender como lo es nuestra capacidad de abstracción (propia de los profesionales de esta área).

Hablemos de UML

El lenguaje unificado de diagrama o notación (UML) sirve para especificar, visualizar y documentar esquemas de sistemas de software orientado a objetos. UML no es un método de desarrollo, lo que significa que no sirve para determinar qué hacer en primer lugar o cómo diseñar el sistema, sino que simplemente le ayuda a visualizar el diseño y a hacerlo más accesible para otros.

Esta notación es un estándar para modelar sistemas, desde diferentes vistas o niveles de abstracción, que pueden ir desde la definición del problema (casos de uso), la vista lógica (clases, objetos), la vista de procesos (comportamiento), implementación y hasta distribución. Es tan amplia que incluso ayuda a entender procesos de negocio complejos, lo cual lo convierte en una buena herramienta de comunicación entre las diferentes capas, participantes y clientes de un proyecto

UML se compone de muchos elementos de esquematización que representan las diferentes partes de un sistema de software. Los elementos UML se utilizan para crear diagramas, que representa alguna parte o punto de vista del sistema. En UML existen cinco vistas que permiten, visualizar, especificar, construir y documentar la arquitectura del software. UML permite representar cada vista mediante un conjunto de diagramas. Tal y como se describe a continuación:

Vista de caso de uso: muestra la funcionalidad del sistema desde el punto de vista de un actor externo que interactúa con él. Esta vista es útil a clientes, diseñadores y desarrolladores.
Vista de diseño: muestra la funcionalidad del diseño dentro del sistema en términos de la estructura estática y comportamiento dinámico del sistema. Esta vista es útil a diseñadores y desarrolladores.
Vista de procesos: muestra la concurrencia del sistema, comunicación y sincronización. Útil a desarrolladores e integradores.
Vista de implementación: muestra la organización de los componentes de código. Útil a los desarrolladores.
Vista de implantación o despliegue: muestra la implantación del sistema en la arquitectura física. Útil a desarrolladores, integradores y verificadores.

Los diagramas que pertenecen a cada una de las vistas descritas, se aprecian en la siguiente imagen:


Mapa mental de ingeniería de software. versión 2

Como recordaran en una nota anterior publique un mapa mental acerca de la ingeniería de software y el software libre, resulta que luego de que elabore ese mapa estuve estudiando otros temas que se relacionaban y como resultado se nutrió ese primer mapa y quedo mucho más interesante, quizás este trabajo sea de utilidad para ustedes y puedan enriquecerlo aun mucho más, si lo hacen por favor recuerden compartirlo…

Elaborado por: Yenny Andrade

Principios de XP

Quise compartir en este espacio las reflexiones de unas compañeras de mi comunidad de aprendizaje Dahyna Guzmán y nuestra profesora María Esther Remedios.

Se plantea el tema de XP y el software libre, en donde se comienza exponiendo que XP está centrada en 4 valores principales:

1. Comunicación: Los desarrolladores necesitan intercambiar información e ideas sobre el proyecto, a los directivos, y a los clientes de manera confiable. La información debe fluir continua y rápidamente.
2. Sencillez: Siempre que sea posible hay que elegir soluciones simples. Esto no significa estar equivocado o aplicar enfoques simplistas. Beck utiliza a menudo el siguiente aforismo " simple pero no demasiado simple".
3. Retroalimentación: En todos los niveles las personas deberían obtener una retroalimentación muy rápida sobre lo que hacen. Los clientes, los directivos y los desarrolladores tienen que alcanzar una comprensión común de la meta del proyecto, y también acerca del estado actual del proyecto, sobre qué necesitan realmente los clientes en primer lugar primero y sobre sus prioridades, y qué desarrolladores pueden hacerlo y en que tiempo.
4. Valor: Cada persona implicada en el proyecto debería de tener el valor (y el derecho) de expresar su valoración sobre el proyecto. Todos deberían ser abiertos y dejar que todos examinasen e incluso modificasen su trabajo.

Al respecto es importante tomar en cuenta lo siguiente, según la apreciación de la Prof. María E. y la cual comparto:

  • La comunicación es un tema muy complejo, por algo existen ciencias, carreras, postgrados y doctorados en comunicación social.
  • La sencillez es una percepción que la mayoría de las veces tiene que ver con el dominio que se tiene sobre el tema y la facilidad de presentación.
  • La retroalimentación y la valoración son claves en la producción del SL, por lo tanto despertar y mantener el interés es otro de los grandes retos.
Resulta que llevar a cabo estos principios no es solo creer que se hace lo que dice una receta, o un conjunto de principios, es que se debe saber lo que significa e implica cada uno de estos, ser efectivos en la implementación y conocer las dificultades que implica llevarlo a cabo, para lograr la mayor efectividad posible.


La relación entre XP y el software libre, es planteada de esta forma en un trabajo publicado en  Monografias.com - Agilidad y desarrollo de Software Libre, que lo resume de la siguiente forma (ver imagén)

Enfoques metodológicos

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

Ahora bien 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.
Como resultado de esta nueva teoría se crea un Manifiesto Ágil  cuyas principales ideas son:
  • Los individuos y las interacciones entre ellos son más importantes que las herramientas y los procesos empleados.
  • Es más importante crear un producto software que funcione que escribir documentación exhaustiva. 
  • La colaboración con el cliente debe prevalecer sobre la negociación de contratos.
  • La capacidad de respuesta ante un cambio es más importante que el seguimiento estricto de un plan.
Entre los principales métodos ágiles tenemos el XP (eXtreme Programming), Scrum, Iconix, Cristal Methods, AUP entre otras.

Estas metodologías ponen de relevancia que la capacidad de respuesta a un cambio es más importante que el seguimiento estricto de un plan. Nos lo proponen porque para muchos clientes esta flexibilidad será una ventaja competitiva y porque estar preparados para el cambio significar reducir su costo. Estas metodologías son las que mejor se adaptan a los proyectos de software libre, donde lo dinámico prevalece durante todo el proceso. 

Más allá de lo diverso que puedan llegar a ser todos estos nuevos enfoques metodológicos, lo importante es entenderlos y conocer qué nos pueden aportar a nuestro proyecto, para aplicarlos en esas fases o procesos en los que nuestro equipo o nuestros usuarios estén más cómodos con ello, y no al revés. Las metodologías se deben adaptar a nuestras necesidades y no tratar de que nuestra situación encaje en una metodología establecida, es válido hacer las combinaciones necesarias, de forma congruente, para que sea un apoyo real al proyecto.

Elaborado con información del artículo, METODOLOGÍAS TRADICIONALES  VS. METODOLOGÍAS ÁGILES de Roberth G. Figueroa , Camilo J. Solís y Armando A. Cabrera.

Mapa mental acerca de la ingeniería del software vs software libre

Ya que estas disciplinas están muy vinculadas y que resulta importante estudiar sus relaciones he aquí un mapa mental que elaboré como parte de mi proceso de aprendizaje para mi comunidad académica y muestra de forma gráfica y precisa definiciones y elementos relevantes al respecto. Espero que les sea de utilidad.

Mapa mental elaborado por Yenny Andrade.

La ingeniería del software y el 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, consumían mucho más tiempo 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 y 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.

Ahora bien en los proyectos de software libre el reto es aún 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 funciona la cosa, sino que por el contrario se dedique a producir y colaborar, por lo que se requiere entonces de mecanismos dinámicos fáciles de aplicar y de entender.
Comparto la idea de que uno de los elementos distintivos en SL es la creación, desempeño y evolución de los equipos de trabajo que se conforman alrededor de estas comunidades, así como la forma cómo manejan el liderazgo, la motivación y el reconocimiento. Un fenómeno que va más allá de lo técnico, que como ya hemos conversado antes, tiene que ver con lo social y filosófico.

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.

Para gestionar cualquier proyecto incluso de software libre, entre los factores a tener en cuenta se encuentran:
1.- Cumplir con los plazos de entrega.
2.- Lograr la entrega completa según la definición inicial del proyecto.
3.- El proyecto debe servir para lo que se acordó y tiene la calidad esperada.
4.- Se cumplen las expectativas del proyecto se han cumplido.
5.- El beneficio establecido para el proyecto se ha alcanzado.

Aportes de la ingeniería de software al SL

Entre los grandes aportes de la ingeniería de software al movimiento del Software Libre (SL), es precisamente la forma de hacer las cosas, mejor dicho de hacer que el software se haga de la mejor forma posible, lo que algunos llaman metodologías, bastante útiles en cualquier proyecto.

Uno de los aspectos más importantes para las comunidades de desarrollo de software libre es que las piezas funcionen de forma engranada y disponer de la información que sea necesaria para hacer los aportes que la comunidad necesita. El seguimiento de proyectos en las comunidades de SL, está basado en hacer las cosas lo más organizadamente posible, de forma que sus desarrollos no sean incompatibles y que se trabaje como lo han acordado hacer. El secreto está en una comunicación eficaz  y en el espíritu de colaboración que es indispensable. Se requiere de líderes que organicen el trabajo, que no intenten imponerse (prevalece la colaboración), que sepa delegar a la comunidad que les acompaña el trabajo requerido, así como hacer que estos permanezcan acompañándole.

El medio que utilizan para establecer su comunicación es Internet, pero a través de plataformas que soportan el trabajo colaborativo, en el caso de la comunidad de desarrolladores de Debían, uno de sus más importantes recursos es CPAN (Comprehensive Perl Archive Network), que además de ofrecer herramientas para el desarrollo y seguimiento colaborativo, también ofrecen un sistema de seguimiento de fallos, y un sistema de organización, búsqueda y consulta de la documentación de los módulos que lo conforman. Además cuentan con una herramienta (script) que les permite  comparar el estado de los módulos en CPAN, los paquetes en el depósito Subversión, los reportes en el sistema de seguimiento de Debían, y los paquetes publicados en la distribución misma de Debían. La comunidad manifiesta que hoy en día, este script es su principal herramienta de seguimiento, brindándoles un reporte de estado condensado y adecuado específicamente a su flujo de trabajo. Mayor información en: http://gwolf.org/soft/coord_desarrollo_integracion_sl 

En la comunidad de Ubuntu se utiliza la plataforma colaborativa Launchpad, para conectar a su comunidad y darle seguimiento a sus proyectos. La apuesta de Ubuntu en Launchpad se basa en la creencia de que no sólo el software libre debe ser accesible y de fácil uso a los usuarios corrientes, sino que también los canales de colaboración y desarrollo deben tener pasarelas accesibles a los usuarios que, aun sin tener habilidades informáticas, deseen colaborar. Launchpad, cuenta con herramientas tales como: canalizador de soporte, canalizador de bounties, gestor de planificación de proyectos de software libre, agenda de actividades personalizada basada en la recopilación de actividades de los equipos y proyectos en los que el usuario está implicado, herramienta de traducción de software libre vía web, gestor de incidencias, entre otros nuevos desarrollos. Para mayor información visitar: http://doc.ubuntu-es.org/Launchpad 

En cualquier comunidad de software libre se han de encontrar las herramientas, los procesos y métodos que le permiten sacar adelante sus proyectos de la mano de sus participantes. La colaboración aunque fundamental no es lo único que hace falta…

Entradas antiguas Página Principal


Seguidores


Este es un blog dedicado a recopilar mis lecciones aprendidas en este tema y compartirlas con todos ustedes... Bienvenidos!


Recent Comments