Sei sulla pagina 1di 45

Metodologías de Desarrollo

de Software

2,018 - 2
Contenido
• Introducción
• Metodologías Tradicionales.
• Metodologías Ágiles.
• Criterios para la selección de la
metodología de desarrollo.
Introducción
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.
Clasificación de Metodologías
Metodologías tradicionales, pesadas o
“heavyweight”.
Metodologías Estructuradas
Metodologías Orientadas a Objeto
Metodologías ágiles.
Metodologías tradicionales

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.
Metodologías tradicionales
 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 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.

Rational Unified Process (RUP)
Proceso de ingeniería de software bien
estructurado y definido, cuyo objetivo es entregar
un producto que satisfaga las necesidades del
negocio.
Captura las mejores prácticas de desarrollo de
software.
Es adaptable a un amplio rango de proyectos así
como como a sus necesidades cambiantes:
Marco de trabajo de procesos personalizables.
Estructura de RUP
Fases del RUP
Fase Inicial o de Concepción
Objetivos:
– Comprender el alcance del proyecto.
– Construir los casos de negocio.
– Obtener el compromiso de los involucrados.
– Estimación de recursos y planificación de hitos
Entregables:
– Documento de visión, casos de uso de negocio, lista
de riesgos, plan de desarrollo de software, infraestructura
de desarrollo, glosario, modelo de casos de uso, prototipo,
modelo de dominio.
Diagrama de Caso de Uso (UML)
Fase de Elaboración
Objetivos:
– Desarrollar plan del proyecto.
– Describir la mayoría de requisitos del sistema.
– Mitigar riesgos principales.
– Construir una arquitectura base.
– Comprender lo que se necesita para construir el
sistema.
Entregables:
– Prototipos, documento de arquitectura, modelo de
diseño, modelo de datos, modelo de implementación, casos
de prueba, arquitectura de automatización de pruebas.
Fase de Construcción
Objetivos:
– Construir de forma iterativa e incremental un producto
completo.
– Describir requisitos restantes.
– Refinar el diseño.
– Completar la implementación.
– Pruebas de software.
Entregables:
– El sistema, plan de despliegue, material de ayuda al
usuario final.
Fase de Transición
Objetivos:
– Construir la versión final del producto y entregarla al
cliente.
– Corregir problemas no detectados o finalizar
características pospuestas.
Entregables:
– Producto final.
– Elementos de implementación.
Roles en un Proyecto de SW
Analistas:
– Arquitecto de negocio
– Analista de procesos de negocio.
– Diseño de negocio.
– Analista de sistemas.
– Analista de requerimientos.
Roles en un Proyecto de SW
Desarrolladores:
– Arquitecto de software.
– Diseñador.
– Diseñador de interfaz de usuario.
– Diseñador de base de datos.
– Programador.
– Integrador.
Roles en un Proyecto de SW
Administradores:
– Jefe de proyecto.
– Administrador de control de cambios.
– Administrador de configuración.
– Administrador de pruebas.
– Administrador de implantación.
– Revisor de gestión.
Roles en un Proyecto de SW
Pruebas:
– Ejecutor de pruebas.
– Analista de pruebas.
– Diseñador de pruebas.
Roles en un Proyecto de SW
Producción y soporte:
– Documentador técnico.
– Administrador de sistemas.
– Especialista en herramientas.
– Desarrollador de cursos.
– Diseñador gráfico.
– Ingeniero de Procesos
• Otros
– Coordinador de revisión.
– Revisor técnico.
– Stakeholder.
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 se valoran los elementos de la


derecha, se valoran 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)
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.
Proceso SCRUM
Sprint 0:
Se define la misión del trabajo a realizar así como las
herramientas y equipo para alcanzar el objetivo.
Condiciones que determinan el alcance del proyecto:
financiación, personas, herramientas, etc.
Primera versión del Product Backlog (pila de producto).
Sprints:
Sigue una secuencia de reuniones que garantizan el
cumplimiento de los compromisos.
Tiene las siguientes reuniones: Planificación del sprint,
Reuniones diarias, Revisión del sprint y Retrospectiva.
Pasado un sprint se realiza un release o entrega al
cliente.
SCRUM
Roles de SCRUM

Scrum Master.

Product Owner.

Equipo de Proyecto.
Scrum Master
Representa a la gestión del proyecto.
Responsable de promover los valores y
prácticas de Scrum.
Remueve impedimentos.
Se asegura de que el equipo es completamente
funcional y productivo.
Permite la estrecha cooperación en todos los
roles y funciones.
Escudo del equipo de interferencias externas.
Product Owner
Define las funcionalidades del producto.
Decide sobre las fechas y contenidos de los
releases.
Es responsable por la rentabilidad del producto.
Prioriza funcionalidades de acuerdo al valor del
mercado/negocio.
Ajusta funcionalidades y prioridades en cada
iteración si es necesario.
Acepta o rechaza los resultados del trabajo del
equipo.
Equipo de Proyecto
 De 5 a 9 personas.
 Multi-funcional: Programadores, testers, analistas,
diseñadores, etc.
 Los miembros deben ser full-time.
 Puede haber excepciones (Ej.: Infraestructura, SCM,
etc.)
 Los equipos son auto-organizativos.
 Idealmente, no existen títulos pero a veces se utilizan
de acuerdo a la organización.
 Solo puede haber cambio de miembros entre los
sprints.
¿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?

Potrebbero piacerti anche