Sunteți pe pagina 1din 30

Metodologías de Desarrollo

de Software

2,018 - 1
Contenido
• Introducción
• Metodologías Estructuradas.
• Metodologías Orientadas a Objeto.
• Metodologías Ágiles.
• Criterios para la selección de la
metodología de desarrollo.
Métodos para el desarrollo de SW
Un proceso de software detallado y completo suele
denominarse “Metodología”. Las metodologías se
basan en una combinación de los modelos de
proceso genéricos (cascada, evolutivo,
incremental, etc.).
Se utiliza el término “método” para referirse a
técnicas, notaciones y guías asociadas, que son
aplicables a una (o algunas) actividades del
proceso de desarrollo, por ejemplo, suele hablarse
de métodos de análisis y/o diseño.
Metodologías estructuradas
Comenzaron a desarrollarse a fines de los 70’s con
la Programación Estructurada, luego a mediados
de los 70’s aparecieron técnicas para el Diseño
(Diagrama de Estructura) primero y posteriormente
para el Análisis (Diagrama de Flujo de Datos).
Estas metodologías son particularmente
apropiadas en proyectos que utilizan para la
implementación lenguajes de 3ra y 4ta generación.
Ejm.: Gane & Sarson , Ward & Mellor, Yourdon &
DeMarco e Information Engineering
Diagrama de Flujo de Datos
(Yourdon)
Metodologías orientadas a objetos
Su historia va unida a la evolución de los lenguajes
de programación orientada a objeto, los más
representativos: a fines de los 60’s SIMULA, a fines
de los 70’s Smalltalk-80, la primera versión de C++
en 1981 y actualmente Java o C# de Microsoft. A
fines de los 80’s comenzaron a consolidarse
algunos métodos Orientados a Objeto.
En 1995 Booch y Rumbaugh proponen el Método
Unificado, que dio lugar al Unified Modeling
Language (UML), la notación OO más popular en
la actualidad. RUP, OPEN y METRICA usan UML.

Diagrama de Caso de Uso (UML)
Metodologías tradicionales (no
ágiles)
Están guiadas por una fuerte planificación durante
todo el proceso de desarrollo
Se realiza una intensa etapa de análisis y diseño
antes de la construcción del sistema.
Todas las propuestas metodológicas antes
indicadas pueden considerarse como metodologías
tradicionales (a excepción del RUP, que se puede
configurar como ágil).
Metodologías tradicionales (no
ágiles)
 Elevada documentación.

 Procesos rígidos y secuenciales.

 Alta modularidad y trabajo por separado.

 Equipos grandes y con pocas necesidades de


comunicación.

 Lento ante la resolución de problemas confusos.

 Alta jerarquización de roles.


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 fácil de aprender y
modificar, bien documentado), y adaptable
(permite realizar cambios de último momento).
Metodologías ágiles
 Competencia.

 Enfoque común.

 Colaboración.

 Habilidad para la toma de decisiones.

 Capacidad de resolución de problemas confusos.

 Confianza y respeto mutuo.

 Organización propia.
Manifiesto ágil

1. Individuos e interacciones sobre procesos y herramientas.

2. Software funcionando sobre documentación extensiva.

3. Colaboración con el cliente sobre negociación contractual.

4. Respuesta ante el cambio sobre seguir un plan.

Esto es, aunque valoramos los elementos de la


derecha, valoramos más los de la izquierda (2001)
Metodologías ágiles
Entre las metodologías ágiles, tenemos:
Extreme Programming (XP).
Scrum.
Kanban.
Dynamic Systems Development Method (DSDM).
Proceso Unificado Ágil (AUP).
Familia de Metodologías Crystal.
Feature Driven Development.
Adaptive Software Development.
eXtreme Programming (XP)
La programación extrema se diferencia de las metodologías
tradicionales principalmente en que pone más énfasis en la
adaptabilidad que en la previsibilidad. 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.
XP se basa en la realimentación continua entre el cliente y
el equipo de desarrollo, comunicación fluida entre todos
los participantes, simplicidad en las soluciones
implementadas, coraje para enfrentar los cambios y
respeto por la calidad del trabajo realizado. Es
especialmente adecuada para proyectos con requisitos
imprecisos y muy cambiantes, y donde existe un alto riesgo
técnico.
Ciclo de Vida de XP
SCRUM
Es un marco de trabajo para la gestión y desarrollo de
software basada en un proceso iterativo e incremental
utilizado comúnmente en entornos basados en el desarrollo
ágil de software. Aunque estaba enfocado a la gestión de
procesos de desarrollo de software, puede ser utilizado en
equipos de mantenimiento de software, o en una
aproximación de gestión de programas.
SCRUM
KANBAN
Es una metodología ágil inspirada en el
proceso de manufactura “Just in Time” de
Toyota.
Es un proceso y un sistema de gestión.
La visualización es importante en el proceso.
No prescribe roles
KANBAN – Monitoreo Visual
¿Metodología Tradicional o Ágil?

¿Qué elementos se deben tener en


cuenta para la selección de uno u
otro enfoque?
Proyecto Tradicional

Ingeniería del Software III


Proyecto Ágil

Ingeniería del Software III


Juicio de Expertos
El juicio de expertos es la herramienta y técnica
más común de la dirección de proyectos.
Este término se refiere a utilizar el conocimiento,
experiencia, educación, habilidad, o capacitación
especializada de un grupo o una persona.
Estrella de Boehm y Turner
¿Es posible combinar en un mismo
proceso de desarrollo ambos
enfoques?
¿Metodología Tradicional o Ágil?

 No existe una metodología mejor que otra, cada


una responde a necesidades reales de la industria
de software.
 Escogeremos la metodología en función a las
condiciones donde desarrollemos el software.
Ideas
Ideas Esenciales
esenciales

 ¿Qué características (capacidades, habilidades,


personalidad) tienen los miembros del equipo de
desarrollo?
 ¿Qué características tiene el dominio de
aplicación del producto?
 ¿Qué conocimientos tiene el equipo de trabajo
sobre ese dominio del producto?
Ideas
Ideas Esenciales
esenciales

 ¿De qué recursos materiales disponemos para


el desarrollo del proyecto?
 ¿Qué definiciones tiene el cliente de lo que
quiere? y ¿Cuán comprometido está?
 ¿Cuán complejo y grande es el producto que se
solicita por el cliente?
Ideas
Ideas Esenciales
esenciales

 ¿De qué tiempo disponemos para hacer el


producto?
 ¿Han trabajado juntos los miembros del equipo
antes de este proyecto? ¿Cuánto tiempo?
Actividad Grupal
Indicar la metodología de desarrollo de Software
que utilizarán en su Trabajo de Investigación.

S-ar putea să vă placă și