Diagramas de Secuencia
Diagrama de Cambios:
Diagrama Completo:
Animación
Practica 5
Historias de Usuario
Practica 4
¿Qué es la Programación Extrema?
La programación
extrema es una metodología de desarrollo ágil que tiene como principal objetivo
aumentar la productividad a la hora de desarrollar un proyecto software. Da
prioridad a los trabajos que dan un resultado directo y en los cuales se reduce
la burocracia que pueda existir en el entorno de trabajo.
¿Cuáles son los valores y principios de la Programación Extrema?
- Comunicación
- Simplicidad
- Realimentación
- Coraje
¿Cuáles son las actividades, recursos y prácticas de la Programación Extrema?
·
Retroalimentación
·
Principio
de Pruebas
·
Planificación
·
El
cliente forma parte del equipo de desarrollo
·
Programación
por parejas
·
Proceso Continuo
·
Integración
Progresiva
·
Eliminar
código duplicado o inútil
·
Entregables
pequeños
·
Propiedad intelectual
·
Entendimiento
·
Diseño
Simple
·
Visión
evolutiva
·
Todos
son dueños del código
·
Sin
embargo, se debe aplicar un estandar para mantener un código uniforme
·
¿Cuál son
las fases del proceso de desarrollo de XP?
- Planificación: El primer paso de cualquier
proyecto que siga la metodología X.P es definir las historias de usuario
con el cliente. Las historias de usuario tienen la misma finalidad que los
casos de uso pero con algunas diferencias: Constan de 3 ó 4 líneas
escritas por el cliente en un lenguaje no técnico sin hacer mucho hincapié
en los detalles; no se debe hablar ni de posibles algoritmos para su
implementación ni de diseños de base de datos adecuados, etc.
- Diseño: La metodología X.P sugiere que
hay que conseguir diseños simples y sencillos. Hay que procurar hacerlo
todo lo menos complicado posible para conseguir un diseño fácilmente
entendible e impleméntable que a la larga costará menos tiempo y esfuerzo
desarrollar.
- Codificación: La codificación debe hacerse
ateniendo a estándares de codificación ya creados. Programar bajo
estándares mantiene el código consistente y facilita su comprensión y
escalabilidad.
- Pruebas: Uno de los pilares de la
metodología X.P es el uso de test para comprobar el funcionamiento de los
códigos que vayamos implementando.
¿Qué es una historia de usuario?
Son descripciones cortas y simples de una funcionalidad, escritas desde la perspectiva de la persona que necesita una nueva capacidad de un sistema, por lo general el usuario, área de negocio o cliente.
Presentación:
Mapa Conceptual
Practica 3
¿Qué son las metodologías ágiles de desarrollo de software?
El desarrollo ágil de software envuelve un enfoque para la toma de
decisiones en los proyectos de software, que se refiere a métodos de ingeniería
del software basados en el desarrollo
iterativo e incremental, donde los requisitos y soluciones evolucionan con el
tiempo según la necesidad del proyecto. Así el trabajo es realizado mediante la
colaboración de equipos auto-organizados y multidisciplinarios, inmersos en un
proceso compartido de toma de decisiones a corto plazo.
Cada iteración del
ciclo de vida incluye: planificación, análisis de requisitos, diseño,
codificación, pruebas y documentación. Teniendo gran importancia el concepto de
"Finalizado" (Done), ya que el objetivo de cada iteración no es
agregar toda la funcionalidad para justificar el lanzamiento del producto al
mercado, sino incrementar el valor por medio de "software que
funciona" (sin errores).
Los métodos ágiles
enfatizan las comunicaciones cara a cara en vez de la documentación. La mayoría
de los equipos ágiles están localizados en una simple oficina abierta, a veces
llamadas "plataformas de lanzamiento" (bullpen en inglés). La oficina debe incluir
revisores, escritores de documentación y ayuda, diseñadores de iteración y directores de proyecto. Los métodos
ágiles también enfatizan que el software funcional es la primera medida del
progreso. Combinado con la preferencia por las comunicaciones cara a cara,
generalmente los métodos ágiles son criticados y tratados como
"indisciplinados" por la falta de documentación técnica.
¿Cuáles son las características en las que se basan las metodologías
ágiles?
Un proceso es ágil cuando el desarrollo de software es:
- Incremental. Entregas pequeñas
de software, con ciclos rápidos.
- Cooperativo. Cliente y
desarrolladores trabajan juntos constantemente con una cercana
comunicación.
- Sencillo. El método en sí mismo
es simple, fácil de aprender y modificar.
- Permite realizar cambios de
último momento.
¿Cuáles son las ventajas y desventajas del empleo de las metodologías
ágiles respecto a las tradicionales?
Ventajas
- Las entregas son frecuentes
- El proceso omite pasos que
puedan atrasar el desarrollo
- Los cambios pueden ser efectuados
en cualquier etapa del proyecto
- Como el cliente tiene mayor
comunicación con el equipo, los malentendidos disminuyen
- Los procesos pueden mejorar
Desventajas
·
Al no haber documentación, el diseño suele tener pocas
bases para trabajar y es muy dificil que pueda ser reusable
·
Se limita a proyectos pequeños
·
Es altamente dependiente del cliente
¿Cuándo es recomendable utilizar metodologías ágiles en el
desarrollo de software?
El
desarrollo ágil de software refiere a métodos de ingeniería del software
basados en el desarrollo iterativo e incremental, estas metodologías son
imprescindibles en un mundo en el que nos exponemos a cambios recurrentemente.
Siempre hay que tener en cuenta como programadores que lo que es la última
tendencia hoy puede que no exista mañana y por esto existe la metodología ágil
donde los requisitos y soluciones evolucionan mediante la colaboración de
grupos auto organizado y multidisciplinario.
¿Cuáles son algunos tipos de metodologías ágiles?
>
- Dynamic Systems Development
Method (DSDM):
Metodología ágil más veterana y la que más se aproxima a los métodos
tradicionales, su implantación incluso permitiría alcanzar un nivel 2 de
madurez según CMMI.
- Extreme Programming (XP): La metodología ágil más
radical y popular. XP se centra en el ciclo de vida del desarrollo de
software.
- Agile Modeling: Metodología para el modelado y
la generación de documentación que se encuentra alineado con los
principios del desarrollo ágil y que puede ser utilizado como substituto
del UML estándar.
- Feature Driven Development (FCC): Metodología de desarrollo de
software orientada a la generación de valor para el cliente.
Presentacion
Un proceso es ágil cuando el desarrollo de software es:
>
El proceso de Software
Mapa:
Cuestionario:
1. ¿Qué es el proceso del software?
a) Es la recopilación de los requerimientos del software.
b) Es la generación de programas y códigos en un lenguaje específico.
c) Son las actividades que guían la elaboración del software
d) Es la metodología en el generación de código
e) Es la aplicación del modelo vista controlador del desarrollo de software
2. Los modelos de proceso del software:
a) Muestran las necesidades del cliente
b) Son una abstración del proceso del software
c) Se utilizan en proyectos extensos de más de 6 meses
d) Son un modelo ágil de programación
e) Son diagramas que muestran el proceso de la ingeniería.
3. No es una actividad común en el proceso del software
a) Especificación de software
b) Diseño e implementación del software.
c) Validación del software.
d) Soporte de software
e) Evolución del software
4. Son considerados modelos iterativos
a) Modelo de cascada.
b) Incremental
c) Ingeniería de software basada en componentes
d) Desarrollo en Espiral
e) Incisos b y d
f) Ninguno de los anteriores
5. Utiliza o adapta software comercial de ser posible
a) Modelo de cascada.
b) Incremental
c) Desarrollo Evolutivo.
d) Ingeniería de software basada en componentes
e) Desarrollo en Espiral
6. Modelo que tiene que finalizar una etapa para poder acceder a otra
a) Modelo de cascada.
b) Incremental
c) Desarrollo Evolutivo.
d) Ingeniería de software basada en componentes
e) Desarrollo en Espiral
7. Son desarrollos evolutivos
a) Modelo de cascada.
b) Desarrollo Exploratorio.
c) Prototipos desechables
d) Incisos a y b
e) Incisos b y c
f) Ninguno de los anteriores
1. ¿Qué es el proceso del software?
a) Es la recopilación de los requerimientos del software.
b) Es la generación de programas y códigos en un lenguaje específico.
c) Son las actividades que guían la elaboración del software
d) Es la metodología en el generación de código
e) Es la aplicación del modelo vista controlador del desarrollo de software
2. Los modelos de proceso del software:
a) Muestran las necesidades del cliente
b) Son una abstración del proceso del software
c) Se utilizan en proyectos extensos de más de 6 meses
d) Son un modelo ágil de programación
e) Son diagramas que muestran el proceso de la ingeniería.
3. No es una actividad común en el proceso del software
a) Especificación de software
b) Diseño e implementación del software.
c) Validación del software.
d) Soporte de software
e) Evolución del software
4. Son considerados modelos iterativos
a) Modelo de cascada.
b) Incremental
c) Ingeniería de software basada en componentes
d) Desarrollo en Espiral
e) Incisos b y d
f) Ninguno de los anteriores
5. Utiliza o adapta software comercial de ser posible
a) Modelo de cascada.
b) Incremental
c) Desarrollo Evolutivo.
d) Ingeniería de software basada en componentes
e) Desarrollo en Espiral
6. Modelo que tiene que finalizar una etapa para poder acceder a otra
a) Modelo de cascada.
b) Incremental
c) Desarrollo Evolutivo.
d) Ingeniería de software basada en componentes
e) Desarrollo en Espiral
7. Son desarrollos evolutivos
a) Modelo de cascada.
b) Desarrollo Exploratorio.
c) Prototipos desechables
d) Incisos a y b
e) Incisos b y c
f) Ninguno de los anteriores
Investigación
Métodos ágiles de programación
Introducción
Las
metodologías ágiles de desarrollo de software son imprescindibles en un mundo
en el que las cosas cambian a velocidad de vértigo. Los programadores vivimos
preocupados sobre cuales son las últimas tendencias, que lenguajes o prácticas
quedan obsoletos y con la constante espada de Damocles de pensar que lo que
estamos desarrollando hoy quizás no sirva para nada mañana.
El mundo del
desarrollo, para bien o para mal, ha evolucionado desde un modelo en el que se
planificaban y estructuraban minuciosamente todas las fases a un modelo en el
que el desarrollo debe ser lo más rápido y eficiente posible. Personalmente soy
un gran fan de los metodologías ágiles de desarrollo de software, cuyos principios están enunciados en este manifiesto.
Desarrollo
En una
reunión celebrada en febrero de 2001 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.
Varias de las denominadas metodologías ágiles ya estaban siendo utilizadas con
éxito en proyectos reales, pero les faltaba una mayor difusión y
reconocimiento.
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".
El
Manifiesto comienza enumerando los principales valores del desarrollo ágil. Se
valora:
- Al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. La gente es el principal factor de éxito de un proyecto software. Si se sigue un buen proceso de desarrollo, pero el equipo falla, el éxito no está asegurado; sin embargo, si el equipo funciona, es más fácil conseguir el objetivo final, aunque no se tenga un proceso bien definido. No se necesitan desarrolladores brillantes, sino desarrolladores que se adapten bien al trabajo en equipo. Así mismo, las herramientas (compiladores, depuradores, control de versiones, etc.) son importantes para mejorar el rendimiento del equipo, pero el disponer más recursos que los estrictamente necesarios también puede afectar negativamente. En resumen, es más importante construir un buen equipo que construir el entorno. Muchas veces se comete el error de construir primero el entorno y esperar que el equipo se adapte automáticamente. Es mejor crear el equipo y que éste configure su propio entorno de desarrollo en base a sus necesidades.
- Desarrollar software que funciona más que conseguir una buena documentación. Aunque se parte de la base de que el software sin documentación es un desastre, la regla a seguir es “no producir documentos a menos que sean necesarios de forma inmediata para tomar un decisión importante”. Estos documentos deben ser cortos y centrarse en lo fundamental. Si una vez iniciado el proyecto, un nuevo miembro se incorpora al equipo de desarrollo, se considera que los dos elementos que más le van a servir para ponerse al día son: el propio código y la interacción con el equipo.
- La colaboración con el cliente más que la negociación de un contrato. Las características particulares del desarrollo de software hace que muchos proyectos hayan fracasado por intentar cumplir unos plazos y unos costes preestablecidos al inicio del mismo, según los requisitos que el cliente manifestaba en ese momento. Por ello, se propone que exista una interacción constante entre el cliente y el equipo de desarrollo. Esta colaboración entre ambos será la que marque la marcha del proyecto y asegure su éxito.
- Responder a los cambios más que seguir estrictamente un plan. La habilidad de responder a los cambios que puedan surgir a los largo del proyecto (cambios en los requisitos, en la tecnología, en el equipo, etc.) determina también el éxito o fracaso del mismo. Por lo tanto, la planificación no debe ser estricta puesto que hay muchas variables en juego, debe ser flexible para poder adaptarse a los cambios que puedan surgir. Una buena estrategia es hacer planificaciones detalladas para unas pocas semanas y planificaciones mucho más abiertas para unos pocos meses.
Estas son los métodos de desarrollo ágil de páginas que
dominan el panorama a día de hoy:
1.-SCRUM
Scrum es una metodología ágil fantástica para
desarrolladores. Consiste en un modelo de asignación de tareas diarias basado
en reuniones rápidas y control de la evolución de los procesos. Es muy bueno
para llevar un seguimiento de las tareas que se están llevando a cabo y saber
en que puntos se ha atascado el equipo. Además la profundidad de las tareas que
se asignan en SCRUM tiende a ser incremental, y esto coincide
exactamente con el devenir normal de un desarrollo.
Es genial para empresas de desarrollo de software orientadas
a varios clientes.
2.-XP o XTREAM PROGRAMMING
Programación Extrema es un método ágil que se suele
utilizar en equipos con muy pocos programadores que tienen muy pocos procesos
abiertos al mismo tiempo. Consiste principalmente en diseñar, implementar,
programar e implantar lo más rápido posible en equipos de programadores muy
pequeños, principalmente parejas, saltándose la documentación y los procedimientos tradicionales. Se fundamente el la capacidad del equipo para
comunicarse entre si y las ganas de aprender de los errores propios inherentes
en un programador. Las gran ventaja que tiene este sistema es la increíble
capacidad de respuesta del equipo ante imprevistos, aunque es una metodología
para la que es difícil documentar.
XP es un método estupendo para equipos extremadamente
pequeños que se centran en un solo cliente.
3.-Desarrollo Lean
Lean Software Development, también conocido como Lean
Programming es un conjunto de técnicas que engloban una metodología
de desarrollo ágil de software orientado a conseguir exactamente lo que
necesita el cliente. Es una evolución del Método Toyota de Producción
aplicado al desarrollo y que está muy de moda entre los equipos de
desarrollo en startups. Principalmente consiste en ciclos de evolución de
software incrementales en los que se posponen las decisiones lo más posible
hasta haber obtenido un feedback del cliente y así reaccionar lo más rápido y
eficazmente posible a sus necesidades. Se fundamenta en tener un equipo potente
y comprometido y el principio de aprendizaje continuo sobre el producto.
El Desarrollo Lean una metodología fantástica para
startups que están desarrollando un software orientado a tener éxito en el
mercado, como desarrolladores de videojuegos o apps para móviles.
El mundo del desarrollo con metodologías ágiles fue
mi puerta hacia el mundo de la productividad personal y creo que ambas
prácticas están íntimamente interrelacionadas. Un desarrollo ágil necesita
de personas productivas y las personas productivas necesitan de un entorno de
trabajo donde puedan explorar todo su potencial.
Comparación Metodología Ágil y Tradicional
Vamos a
enumerar las principales diferencias de una Metodología Ágil respecto de las
Metodologías Tradicionales (llamadas peyorativamente “no ágiles” o “pesadas”).
La Tabla 2 recoge estas diferencias que no se refieren sólo al proceso en sí,
sino también al contexto de equipo y organización que es más favorable a cada
uno de estas filosofías de procesos de desarrollo de software.
Metodología
Ágil
|
Metodología
Tradicional
|
Pocos Artefactos.
El modelado es prescindible, modelos desechables.
|
Más
Artefactos. El modelado es esencial, mantenimiento de modelos
|
Pocos
Roles, más genéricos y flexibles
|
Más Roles,
más específicos
|
No existe
un contrato tradicional, debe ser bastante flexible
|
Existe un
contrato prefijado
|
Cliente es
parte del equipo de desarrollo (además in-situ)
|
El cliente
interactúa con el equipo de desarrollo mediante reuniones
|
Orientada
a proyectos pequeños. Corta duración (o entregas frecuentes), equipos
pequeños (< 10 integrantes) y trabajando en el mismo sitio
|
Aplicables
a proyectos de cualquier tamaño, pero suelen ser especialmente
efectivas/usadas en proyectos grandes y con equipos posiblemente dispersos
|
La
arquitectura se va definiendo y mejorando a lo largo del proyecto
|
Se
promueve que la arquitectura se defina tempranamente en el proyecto
|
Énfasis en
los aspectos humanos: el individuo y el trabajo en equipo
|
Énfasis en
la definición del proceso: roles, actividades y artefactos
|
Basadas en
heurísticas provenientes de prácticas de producción de código
|
Basadas en
normas provenientes de estándares seguidos por el entorno de desarrollo
|
Se esperan
cambios durante el proyecto
|
Se espera
que no ocurran cambios de gran impacto durante el proyecto
|
Conclusión
Las metodologías ágiles son en realidad
una familia de modelos o técnicas, todas ellas compartiendo la característica
de interpretar el desarrollo de software como una actividad en la que siempre
hay un cierto grado de incertidumbre. Incertidumbre que hace necesario poner el
énfasis en las personas, dejar que se auto-organicen y que interactúen buscando
siempre satisfacer los requisitos del cliente, y planificando iteración a
iteración, adaptándose con flexibilidad a los cambios que se producirán de
seguro durante la vida del proyecto.
Bibliografía
·
Cockburn,
Alistair. Agile Software Development. Highsmith Series.
·
Chin, Gary
(2004). Agile Project Management: How to Succeed in the Face of
Changing Project Requirements. AMACOM.
·
Martinez,
Gustavo (2011). Coding, quality check and documentation (300%): Get
them from the same development team!. VPD.
Mapa conceptual
CUESTIONARIO (EVALUACIÓN)
1. Los
métodos ágiles se utilizan en:
a) Programación
Orientada a Objetos
b) Desarrollo de
software
c) Soporte de
Software
d) Programación
estructurada
e) Calidad de
Software
2. ¿Qué
modelo de desarrollo de software utilizan los métodos ágiles?
a) Cascada
b) Lineal
c) Iterativo
d) Espiral
e) Evolutivo
3. ¿Cuáles
son las principales características en las que se basa el método ágil?
a) Trabajo en
equipo, adaptable, avances funcionales
b) Satisfacción del
cliente, reduce tiempo, una sola entrega final.
c) Comunicación,
no se adapta a los cambios, no es interactivo.
d) Orientado a
resultados, no hay comunicación, no hay trabajo en equipo
4. ¿Cuáles
son las características que diferencian al método ágil del
convencional?
a) El cliente
participa en el equipo de desarrollo
b) Trabajo en equipo
c) Satisfacción
del cliente
d) Presenta avances
incrementales del proyecto al cliente
e) Adaptable
en cualquier etapa del proyecto
5. En
los métodos ágiles el cliente:
a) Desarrolla
Software
b) Se incorpora al
equipo de trabajo
c) Trabaja en
otros proyectos de software
d) Resuelve
problemas de comunicación del equipo
e) Proporciona
los recursos materiales







No hay comentarios.:
Publicar un comentario