domingo, 28 de febrero de 2016

Programación Extrema - Una visión general

La agencia espacial ha decidido utilizar el método de Programación Extrema por lo que a continuación se dará una explicación acerca de lo que es la programación extrema, principios, proceso de desarrollo, entre otros.

¿Qué es la Programación Extrema?

Es una metodología ágil de programación que nació como un intento de establecer un conjunto de practicas que facilitasen la finalización de los proyectos con requisitos imprecisos, cambiantes y con alto riesgo técnico


¿Cuáles son los valores y principios de la  Programación Extrema?

  • La relaciones interpersonales entre el equipo de desarrollo es la clave del éxito.
  • Se preocupa por el aprendizaje de los desarrolladores
  • Se necesita coraje para enfrentar los cambios

¿Cuáles son las actividades, recursos y prácticas de la Programación Extrema? 

Roles:

  • Cliente: Escribe las historias de usuario y las pruebas funcionales para validar su implementación
  • Programador: El programador escribe las pruebas unitarias y produce el código del sistema
  • Encargado de pruebas (Tester): Ejecuta las pruebas regularmente, transmite los resultados de las pruebas y mantiene las herramientas
  • Encargado de segumiento (rastreador, tracker): Proporciona realimentación al equipo, también se encarga de realizar el seguimiento de las iteraciones 
  • Entrenador:Es responsable del proceso global. guía al equipo para que se se sigan las practicas XP correctamente
  • Consultor: Miembro externo que tiene conocimientos acerca de algo del proyecto y guía las soluciones a los problemas
  • Gestor (Manager o Big boss): Es el que administra el proyecto


Practicas:


  • El juego de la planificación: Hay una comunicación frecuente el cliente y los programadores
  • Historias de usuario: Requerimientos del sistema explicados en un lenguaje simple
  • Cortas y pequeñas iteraciones: Producir rápidamente versiones del sistema que sean operativas
  • Metáforas: Una metáfora es una historia compartida que describe cómo debería funcionar el sistema
  • Diseño Simple: Se debe de dar la solucion más simple posible
  • Restructuración del sistema para eliminar funciones duplicadas
  • Programación por pares: Toda la producción de código debe realizarse con trabajo en parejas de rogramadores
  • Propiedad colectiva: Cualquier programador puede cambiar cualquier parte del código en cualquier momento.
  • Integración continua: Cada pieza de código es integrada en el sistema una vez que esté lista
  • Cliente in-situ: El cliente tiene que estar presente y disponible todo el tiempo para el equipo
  • Estándares de codificación: es indispensable que se sigan ciertos estándares de programación para mantener el código legible
  • 40 horas de trabajo: Se debe trabajar un máximo de 40 horas por semana

¿Cuál son las fases del proceso de desarrollo de XP?

*Fase de exploración: En esta fase los usuarios escriben las tarjetas de historia que ellos quieren que sean incluidas en la primera versión. Cada una de las tarjetas de historia describen una funcionalidad que será añadida al programa.

*Fase de planificación: En esta fase se establece la prioridad de las diferentes historias y se acuerda el contenido de la primera entrega del proyecto. La duración de esta fase no suele exceder el plazo de unos pocos días

*Fase de iteraciones: Esta fase incluye la realización de diferentes fases antes de liberar la primera versión del producto:


  1. El cliente define el valor de negocio a implementar.
  2. El programador estima el esfuerzo necesario para su implementación.
  3. El cliente selecciona qué construir, de acuerdo con sus prioridades y las restricciones de tiempo.
  4. El programador construye ese valor de negocio.
  5. Se vuelve al primer paso



*Fase de producción: En esta fase se llevan a cabo se llevan a cabo un conjunto de pruebas extras, de rendimiento y funcionamiento que son necesarias antes de poder entregar el producto al cliente. Las iteraciones de esta fase no deben durar más de tres semanas.

*Fase de mantenimiento: Una vez se ha liberada la primera versión a los usuarios, el proyecto se debe mantener en el entorno de producción siempre y cuando aún hayan iteraciones en fase de producción.

*Fase de cierre del proyeto: Es la fase en que los clientes ya no tienen más historias que deban ser implementadas. Es la fase en que los clientes ya no tienen más historias que deban ser implementadas.


¿Qué es una historia de usuario?

Es una ténica que especifica los requisitos del sistema formulados en una o dos sentencias, en el lenguaje común delcliente. Se trata de tarjetas de papel en las cuales el cliente describe brevemente las características que el sistema debe poseer, seanrequisitos funcionales o no funcionales y pueden ser de una a tres semanas de tiempo de programación.

Mapa Conceptual




FUENTES CONSULTADAS: 


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





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