domingo, 28 de febrero de 2016

Nuevo Proyecto**

La Agencia Espacial en días anteriores ha perdido  un satélite de comunicación debido al fallo del software del mismo. La investigación indicó que la falla fue porque  no se cubrieron los requisitos de programación del  sistema especificados por la propia  Agencia.


La Agencia Espacial tiene que remplazarlo lo más pronto posible, ya que las comunicaciones con las naves espaciales dependen del mismo. Afortunadamente para la Agencia, existe un nuevo satélite ya construido que  estaba programado para ser lanzado en un año, el inconveniente es que si se carga el mismo software el satélite se volverá a perder.

Nuestra empresa "El Pato Volador" ha sido contratada para desarrollar el software del satélite en un proyecto de 3 meses como máximo, ya que es el tiempo en que retornará la próxima nave espacial que necesita los servicios del satélite para poder retornar a la tierra.

A continuación daré información acerca de las metodologías ágiles de programación que existen (características, ventajas y desventajas, tipos de metodologías ágiles) para poder dar propuestas a nuestro cliente acerca de la metodología a utilizar.


¿Qué son las metodologías ágiles de desarrollo de software?

Son aquellas que surgen como una alternativa, una reacción a las metodologías tradicionales tales como el plumbing (pesadez en inglés refiriendose al exceso de documentación y lentitud de reacción), y el incomplimiento de las expectativas de las metodologías existentes para poder desarrollar sofware de manera rápida  no renunciando a las prácticas escenciales para asegurar la calidad del producto. 

¿Cuáles son las características en las que se basan las metodologías ágiles?

-desarrollo iterativo
- reducción de artefactos intermedios
- alto grado de comunicación entre el equipo
- se colabora con el cliente
- se adapta a cambios

¿Cuáles son las ventajas y desventajas del empleo de las metodologías ágiles respecto a  las tradicionales? 


Ventajas 


Están prearadas para cambios drante el proyecto
Usa Grupos pequeños, de menos de 10 integrantes
Es muy flexible (no hay contrato)
Se es más sencillo la identificación de presuntos problemas con el sistema ya que el cliente está siempre trabajando al lado del desarrollador

Desventajas

No es aplicable cuando se trata de proyectos grandes
Se hace menos enfasis en la arquitectura del software
En consecuencia de lo anterior hay una deficiencia en el análisis

¿Cuándo es recomendable utilizar metodologías ágiles  en el desarrollo de software?

Cuando el entorno del sistema es muy cambiante y donde se exige reducir drásticamente los tiempos de desarrollo pero manteniendo una alta calidad o cuando los proyectos son pequeños

¿Cuáles son algunos tipos de metodologías ágiles?

* Scrum

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.

* Extreme programming

es una 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

* Test Driven development

Basado en pruebas de desarrollo (TDD) es una técnica avanzada de la utilización de pruebas unitarias automatizadas para impulsar el diseño de software y la fuerza de desacoplamiento de las dependencias. El resultado del uso de esta práctica es un conjunto completo de pruebas de unidad que se pueden ejecutar en cualquier momento para proporcionar información que el software todavía está trabajando. Esta técnica está fuertemente enfatizada por los que utilizan metodologías ágiles de desarrollo.

* 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

* Agile Project Management

reduce la complejidad al descomponer los muchos meses de duración del ciclo de los requisitos de construcción de todo el proyecto, la construcción de todo el producto y luego las pruebas para encontrar cientos de defectos del producto



MAPA CONCEPTUAL




Presentación




Fuentes consultadas


  1. Canós, J. H.. (2003). Metodologías Ágiles en el Desarrollo de Software. Recuperado en Febrero 25, 2016, de Grupo ISSI Sitio web:  http://issi.dsic.upv.es/archives/f-1069167248521/actas.pdf
  2.  Riola, J. (2008). Metodologías Ágiles: HERRAMIENTAS Y MODELO DE DESARROLLO PARA APLICACIONES JAVA EE COMO METODOLOGÍA EMPRESARIAL. Recuperado en Febrero 25, 2016, de Up Commons Sitio web: http://upcommons.upc.edu/bitstream/handle/2099.1/5608/50015.pdf?sequence=1
  3. Version One. (2012). Agile Project Management. Recuperado en Febrero 25, 2016, de VersionOne Sitio web: https://www.versionone.com/agile-project-management/ (En inglés)
  4. Palermo J. (2006). Guidelines for Test-Driven Development. Recuperado en Febrero 25, 2016, de Microsoft Developer Network Sitio web: https://msdn.microsoft.com/en-us/library/aa730844(v=vs.80).aspx (En inglés)


**IMPORTANTE
Este proyecto es meramente ficticio y el post no tiene otro objetivo mas que el de dar una visión general acerca de las metodologías ágiles de programación. Cualquier parecido con la realidad es únicamente coincidencia

Ruta Critica

El objetivo principal de la ruta crítica o CPM (Critical Path Method por sus siglas en inglés) es determinar la duración de un proyecto, entendiéndolo como una secuencia de actividades relacionadas entre sí, dónde cada una de ellas tiene una duración estimada. En ese sentido, el principal supuesto que tiene CPM es que cada actividad tiene tiempos conocidos, por lo que no existe incertidumbre. I


Una ruta es la trayectoria desde el inicio hasta el final del proyecto, y la ruta crítica es la trayectoria más larga del proyecto.

Para utilizar este método se necesitan seguir estos pasos:


  • Definir el proyecto con todas sus actividades o partes principales
  • Establecer la relacione entre cada una de las actividades
  • Dibujar un diagrama conectando las diferentes actividades en base a sus relaciones de precedencia
  • Definir el tiempo y costo estimado de cada actividad
  • Identificar la trayectoria más larga del proyecto. Ésta determinará la duración del proyecto
  • Utilizar el diagrama como ayuda para planear, supervisar y controlar el proyecto
Para facilitar la representación de cada actividad se utiliza la siguiente notación:


Donde

IC = Inicio cercano (el tiempo más corto en el que puede comenzar  la actividad)
IL = Inicio lejano (el tiempo más tarde que puede comenzar una actividad sin retrasar el término proyecto)
TC = Término más cercano (el tiempo más corto en el cual puede empezar la actividad)
TL = Término más lejano (lo más tarde que se puede realizar una actividad sin retrasar el proyecto)


Holgura: Se define holgura como el tiempo máximo que se puede atrasar el cominenzo de una actividad sin que se retrase la finalización del misno y se obtiene como

Holgura = IL  IC
Holgura = TL - TC





FUENTES:


  • Investigación de Operaciones. (2010). Método de la Ruta Crítica - Gestión de Proyectos. Febrero 27, 2016, de Investigación de Operaciones Sitio web: http://www.investigaciondeoperaciones.net/cpm.html

Guión del Sketch acerca del proyecto Kobra Management

En el post anterior, subí el storyboard relacionado al proyecto KobraManagement del equipo NoLimitBit. En esta ocasión subo el guión del sketch que el profesor Juan Manuel ya vió como quedó. Así que disfrútenlo






¡Muchas Gracias!





StoryBoard de Proyecto KobraManagement

En este storyboard se da a conocer la problemática de nuestro cliente y la solución que NoLimitBit
propone. Espero lo disfruten





De lo anterior, podemos observar que se comenten muchos errores tanto para saber quien ha sido inscrito en las competentes, así como también es tardada la forma que se utiliza para saber cual participante fue el ganador de la competencia. NoLimitBit propone hacer estos procesos algo más sencillo para los administradores del gimnasio, implementando nuestro sistema llamado KobraManagement


martes, 23 de febrero de 2016

WebQuest

Este post está destinado para complementar los dos post anteriores que son acerca de los métodos ágiles y los procesos de desarrollo de software.
Son dos web quest que se nos aplicó en clase, pero que no me enteré que tenia que publicarlo en
un post.

Web quest de Métodos ágiles




Web Quest de Procesos de Desarrollo de software.




                                              Bueno, esto es todo amigos.

domingo, 21 de febrero de 2016

Procesos de desarrollo de Software

Introducción.

Para la creación de software, se necesita una serie de actividades bien definidas,
las cuales, dependiendo del tamaño de los proyectos, puede ser un proceso bastante
complejo, que si no se administra adecuadamente al tiempo de desarrollo del proyecto
o a su alcance, puede llegar a afectarlo.

Hay representaciones abstractas de las actividades que se realizan para la creación de
software, las cuales son llamadas: MODELOS DE PROCESOS DE SOFTWARE:

A continuación se dará una breve explicación en una presentación en Power Pont así
como el mapa conceptual del tema.


Presentación Procesos de desarrollo de software


Mapa conceptual
















Al final del día, los que decidimos que modelo seguir para nuestro proyecto
somos nosotros (si es que estamos  desarrollando por nuestra cuenta, porque
si estamos estudiando y nos piden que sigamos un modelo en específico, es
recomendable que se sigan las instrucciones de los profes ;) )

Hasta aquí la publicación. espero les haya gustado. Muchs gracias :D

viernes, 12 de febrero de 2016

Métodos Ágiles de Programación

Introducción:


Anteriormente, en los años 80's y principios de los 90's se tenía a opinión general un mejor software era con ayuda de una planificación cuidadosa, sin embargo, cuando se quiso implementar este enfoque a proyectos pequeños o a los negocios medianos, se invertía mucho tiempo y esfuerzo en cómo se desarrollaría el software y las pruebas del mismo más que en el desarrollo en sí ... Ésto provocó descontento en los desarrolladores de software.


No obstante, no se quedaron con los brazos cruzados, por lo que pensaron en una nueva metodología que pudiera agilizar el proceso de desarrollo de software. Se propuso un método en el cual el desarrollo del software  fuera iterativo, es decir, construir proyectos pequeños y funcionales para así mostrárselo al cliente y de esta forma el cliente vería un avance funcional y no solamente de documentación, pero para lograrlo debería de considerar lo siguiente:

Según Jacobson, un equipo ágil es un equipo rápido que responde de manera apropiada a los cambios.

El Manifiesto para desarrollar:



  • A los individuos y sus interacciones con procesos y herramientas.
  • Al software en funcionamiento sobre la documentación externa.
  • A la colaboración del cliente sobre la negociación de contrato
  • A la respuesta al cambio sobre el seguimiento de un plan


El manifiesto resalta la entrega del software rápido y le resta importancia a los productos de trabajo, además adopta al cliente como parte del equipo desarrollador.

No solamente se tiene un manifiesto para esta manera de programar, sino que también estás definidos 12 principios de la agilidad, los cuales se resumen a continuación:



  1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana
  2. Bienvenidos todos los cambios
  3. Entregar (...) software funcionando (...) con una escala de tiempo más corto.
  4. La gente de negocios y desarrolladores deben de trabajar juntos a diario (...)
  5. Construir el ambiente alrededor de individuos motivados, Darles el ambiente, soporte, (...) y confiar en ellos
  6. El método más eficiente de transmitir la información (...) es la conversación cara a cara.
  7. El software funcionando es la medida primaria del progreso.
  8. Los procesos ágiles promueven el desarrollo sustentable (...)
  9. La atención continua, la excelencia técnica y al buen diseño mejora la agilidad
  10. La simplicidad (...) es esencial
  11. Los mejores arquitectos (...) emergen de equipos auto-organizados
  12. A intervalos regulares, el equipo refleja la forma en que se puede volver más efectivo, entonces su comportamiento se ajusta y adecua en conocimientos.





Conclusión:

Los métodos tradicionales de desarrollo de software no fueron factibles para el desarrollo de sistemas pequeños, haciéndolo más tardado ya que existe el principio de que sin la documentación completa (documento de requerimientos, casos de uso, diagrama entidad-relacion, etc) no es posible desarrollar el sistema.

Considero que el cliente en ocasiones no sabe ni lo que quiere, y que los requerimientos son algo que puede cambiar parcial o totalmente la funcionalidad del sistema y si estamos esperanzados a que se terminen de hacer el análisis de requerimientos, simplemente el desarrollo será muy tardado. Ésto puede llegar a fastidiar al cliente y por consiguiente a hacerlo rechazar el proyecto.

En cambio, los métodos ágiles de programación hacen que  el desarrollo de software sea, valga la redundancia, de manera rápida, el desarrollo pasa a ser iterativo e incremental, el software adquierie poco a poco la funcionalidad que desea el cliente, y no sólo eso, hace que el cliente se integre al equipo,  lo cual beneficia tanto al cliente como al equipo desarrollador.

Por tanto, si se va a desarrollar un proyecto pequeño, o si se tiene una mediana empresa, el método ágil de desarrollo es algo esencial para una mayor satisfacción del cliente; de lo contrario, es mucho mejor utilizar métodos de desarrollo tradicional.

Referencias: 



 - Sommerville, I. and Alfonso Galipienso, M. (2005). Ingeniería del software. Madrid: Pearson Addison-Wesley.