Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las Metodologías de Desarrollo Software
Las Metodologías de Desarrollo Software
CUSCO-PERU
2021
LAS METODOLOGÍAS DE SOFTWARE
1
METODOLOGÍAS DE SOFTWARE
DEFINICION DE METODOLOGIA
Una metodología es un conjunto integrado de técnicas y métodos que permite abordar de forma
homogénea y abierta cada una de las actividades del ciclo de vida de un proyecto de desarrollo. Es
un proceso de software detallado y completo. (Autores varios).
Las metodologías se basan en una combinación de los modelos de proceso genéricos. Definen
artefactos, roles y actividades, junto con prácticas y técnicas recomendadas. La metodología para el
desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto para
llevarlo a cabo con altas posibilidades de éxito. Una metodología para el desarrollo de software
comprende los procesos a seguir sistemáticamente para idear, implementar y mantener un
producto software desde que surge la necesidad del producto hasta que cumplimos el objetivo por
el cual fue creado.
Si esto se aplica a la ingeniería del software, podemos destacar que una metodología:
Una metodología define una estrategia global para enfrentarse con el proyecto. Entre los elementos
que forman parte de una metodología se pueden destacar:
DEFINICION SOFTWARE
El software es el equipamiento lógico e intangible de un sistema informático, que comprende el
conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas
específicas, en contraposición a los componentes físicos que son llamados hardware.
En otras palabras, es el conjunto de los programas de cómputo, procedimientos, reglas,
documentación y datos asociados, que forman parte de las operaciones de un sistema de
computación. (Autores varios).
2
¿QUÉ ES UNA METODOLOGÍA DE DESARROLLO DE SOFTWARE?
Una metodología de desarrollo de software es un marco de trabajo que se usa para estructurar,
planificar y controlar el proceso de desarrollo de sistemas de información. Una gran variedad de
estos marcos de trabajo ha evolucionado durante los años, cada uno con sus propias fortalezas y
debilidades. Una metodología de desarrollo de sistemas no tiene que ser necesariamente adecuada
para usarla en todos los proyectos. Cada una de las metodologías disponibles es más adecuada para
tipos específicos de proyectos, basados en consideraciones técnicas, organizacionales, de proyecto
y de equipo.
Una filosofía de desarrollo de software, con el enfoque o enfoques del proceso de desarrollo
de software.
1. MODELO DE CASCADA(WATERFALL)
Si alguna vez has incursionado en el mundo del Desarrollo de Software, de seguro te has topado en
algún momento con el modelo de cascada. De no ser así, cabe destacar que en este modelo cada
etapa representa una unidad de desarrollo con un pequeño descanso en el medio. Por lo tanto, cada
siguiente etapa inicia tan pronto como la anterior haya culminado, y esos descansos son usados
para confirmaciones del lado del cliente. Adicionalmente, este es considerado como el método
tradicional de explicar el proceso de desarrollo de software en ingeniería de software, por lo que
actualmente es visto como anticuado. Sin embargo, aún sigue siendo aplicado a proyectos con
metas claras y requisitos que demandan hasta 100 horas de desarrollo, sobre todo considerando
que este enfoque permite a los negocios deshacerse del papeleo innecesario, reuniones regulares
que consumen mucho tiempo y retrasos en sus procesos de negocio. Es por esto que esta es una
gran opción para pequeños proyectos donde todos los aspectos del proceso de desarrollo de
software se conocen de antemano, pero una mala solución para proyectos complicados, ya que se
trata de un modelo bastante inflexible.
3
6. Verificación
7. Mantenimiento.
2. MODELO DE ESPIRAL
Mientras que la metodología de la cascada ofrece una estructura ordenada para el desarrollo de
software, las demandas de tiempo reducido al mercado hacen que sus pasos en serie sean
inapropiados.
El siguiente paso evolutivo desde la cascada es donde se realizan los diversos pasos para múltiples
entregas o traspasos. La última evolución de la caída del agua es la espiral, aprovechando el hecho
de que los proyectos de desarrollo funcionan mejor cuando son incrementales e iterativos.
La metodología espiral refleja la relación de tareas con prototipos rápidos, mayor paralelismo y
concurrencia en las actividades de diseño y construcción. El método en espiral debe todavía ser
planificado metódicamente, con las tareas y entregables identificados para cada paso en la espiral.
4
3. METODOLOGÍA DE PROTOTIPO
Es un procedimiento de desarrollo especializado que permite a los desarrolladores la posibilidad de
poder solo hacer la muestra de la resolución para poder validar su esencia funcional ante los
clientes, y hacer los cambios que sean fundamentales antes de crear la solución final auténtica. De
hecho, la mejor parte de esta metodología es que tiende a resolver un conjunto de problemas de
diversificación que ocurren con el método de la cascada.
Además de esto, la gran ventaja de optar por este enfoque es que da una idea clara sobre el proceso
funcional del software, reduce el riesgo de falla en una funcionalidad de software y asiste bien en la
recolección de requisitos y en el análisis general.
Las etapas de desarrollo de software por las cuales tendrás que pasar, en caso de utilizar la
metodología de prototipos.
1. Planeación
2. Modelado
3. Elaboración del Prototipo
4. Desarrollo
5. Entrega y Retroalimentación
6. Comunicación con el Cliente
7. Entrega del Producto Final
Características:
Es un método menos formal de desarrollo.
El prototipo es una técnica para comprender las especificaciones.
Un prototipo puede ser eliminado.
Un prototipo puede llegar a ser parte del producto final.
Ventajas:
Útiles cuando los requerimientos son cambiantes.
Cuando no se conoce bien la aplicación.
Cuando el usuario no se quiere comprometer con los requerimientos.
Cuando se quiere probar una arquitectura o tecnología.
Cuando se requiere rapidez en el desarrollo.
5
4. DESARROLLO RÁPIDO DE APLICACIONES (RAD - Rapid Application Development)
Con el objetivo de otorgar resultados rápidos, se trata de un enfoque que está destinado a
proporcionar un excelente proceso de desarrollo con la ayuda de otros enfoques, pero, además,
está diseñado para aumentar la viabilidad de todo el procedimiento de desarrollo de software para
resaltar la participación de un usuario activo.
Dicho esto, algunas de las ventajas a destacar de este tipo de desarrollo son las siguientes:
6
Generación de aplicaciones: El DRA asume la utilización de técnicas de cuarta generación.
En lugar de crear software con lenguajes de programación de tercera generación, el proceso
DRA trabaja para volver a utilizar componentes de programas ya existentes (cuando es
posible) o a crear componentes reutilizables (cuando sea necesario). En todos los casos se
utilizan
herramientas automáticas para facilitar la construcción del software.
5.INCREMENTAL
Permite construir el proyecto en etapas incrementales en donde cada etapa agrega funcionalidad.
Estas etapas, consisten en requerimientos, diseño, codificación, pruebas y entrega. Permite
entregar al cliente un producto más rápido en comparación del modelo en cascada.
7
Características:
Reduce los riegos ya que provee visibilidad sobre el progreso de las nuevas versiones.
Provee retroalimentación a través de la funcionalidad mostrada.
Permite atacar los mayores riesgos desde el inicio.
Se pueden hacer implementaciones parciales si se cuenta con la suficiente funcionalidad.
Las pruebas y la integración son constantes.
El progreso se puede medir en periodo cortos de tiempo.
Resulta más sencillo acomodar cambios al acortar el tamaño de los incrementos.
Se puede planear en base a la funcionalidad que se quiere entregar primero.
Por su versatilidad requiere de una planeación cuidadosa tanto a nivel administrativo como
técnico.
Ventajas:
o Los clientes no esperan hasta el fin del desarrollo para utilizar el sistema. Pueden empezar
a usarlo desde el primer incremento.
o Los clientes pueden aclarar los requisitos que no tengan claros, conforme ven las entregas
del sistema.
o Las partes más importantes del sistema son entregadas primero, por lo cual se realizan más
pruebas en estos módulos y se disminuye el riesgo de fallos.
8
METODOLOGÍAS DE DESARROLLO DE SOFTWARE ÁGILES
Las metodologías ágiles de desarrollo de software son las más utilizadas hoy en día debido a su
alta flexibilidad y agilidad. Los equipos de trabajo que las utilizan son mucho más productivos y
eficientes, ya que saben lo que tienen que hacer en cada momento. Además, la metodología permite
adaptar el software a las necesidades que van surgiendo por el camino, lo que facilita construir
aplicaciones más funcionales.
KANBAN
Siguiendo con las metodologías ágiles, nos encontramos con Kanban. Se trata de una
metodología Japonesa, la cual consiste en ir etiquetando con tarjetas cada uno de los
procesos que se deben llevar a cabo, también se le ha denominado como “Un sistema de
producción de alta efectividad y productividad”. De hecho, empresas como la marca de
autos Toyota, fueron una de las primeras en implementarla para acelerar los procesos de
producción.
Calidad garantizada
Reducción del desperdicio
Mejora continua
Flexibilidad
SCRUM
Es también una metodología incremental que divide los requisitos y tareas de forma similar
a Kanban. Se itera sobre bloques de tiempos cortos y fijos (entre dos y cuatro semanas) para
conseguir un resultado completo en cada iteración.
Cada iteración por estas etapas se denomina también sprint. La metodología Scrum, es
bastante amigable y fomenta lo que es el trabajo en equipo en todo momento, con la
finalidad de conseguir los objetivos de una forma rápida.
Fundamentos de Scrum
10
PROCESO UNIFICADO DE DESARROLLO SOFTWARE
Proceso Unificado de Desarrollo (RUP) es una metodología de desarrollo de software que
está basado en componentes e interfaces bien definidas, y junto con el Lenguaje Unificado
de Modelado(UML), constituye la metodología estándar más utilizada para el análisis,
implementación y documentación de sistemas orientados a objetos.
Es un proceso que puede especializarse para una gran variedad de sistemas de software, en
diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de
aptitud y diferentes tamaños de proyecto. RUP no es un sistema con pasos firmemente
establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de
cada organización.
Es el resultado de varios años de desarrollo y uso práctico en el que se han unificado técnicas
de desarrollo, a través del UML, y trabajo de muchas metodologías utilizadas por los
clientes. La versión que se ha estandarizado vio la luz en 1998 y se conoció en sus inicios
como Proceso Unificado de Rational 5.0, de ahí las siglas con las que se identifica a este
proceso de desarrollo.
Principales Elementos
LEAN
Está configurado para que pequeños equipos de desarrollo muy capacitados elaboren
cualquier tarea en poco tiempo. Los activos más importantes son las personas y su
11
compromiso, relegando así a un segundo plano el tiempo y los costes. El aprendizaje, las
reacciones rápidas y potenciar el equipo son fundamentales.
Principios Lean
2. Ampliar el aprendizaje
5. Potenciar el equipo
6. Crear la integridad
Debe ser simple y poco costosa de desarrollar, de entre uno y diez días.
Debe aportar valor al cliente y ser relevante para su negocio.
Debe poderse expresar en términos de acción, resultado y objeto.
12
3. Planificación
4. Diseño
5. Implementación
1. Iterativo.
2. Orientado a los componentes software más que a las tareas.
3. Tolerante a los cambios.
4. Guiado por los riesgos.
5. La revisión de los componentes sirve para aprender de los errores y volver a
iniciar el ciclo de desarrollo.
13
Es la combinación de las demás metodologías, solamente que se van utilizando de acuerdo
a como sea necesario, por eso es considerada como la más destacada de las metodologías
ágiles. Así que es momento de entrar en detalles y vamos a ver cuales son los valores que
conforman a la metodología de programación XP.
Valores de la Metodología XP
Comunicación
Simplicidad
Retroalimentación
Valentía
Respeto
14
DIFERENCIAS ENTRE LAS METODOLOGIAS
15
Cabe destacar:
El retrasar las decisiones en un proyecto de software permite potenciar el valor del producto
tanto para el cliente como al equipo o empresa que desarrolla.
Para que un grupo de desarrollo adopte una metodología ágil debe poseer experiencia
trabajando con metodologías tradicionales, ya que la experiencia es la que predomina en
los mementos cruciales del proyecto, además debe tener la capacidad de ser equipos auto-
gestionados, altamente motivados y con gran innovación.
Las metodologías ágiles permiten disminuir costos y brindar flexibilidad a los proyectos de
software donde la incertidumbre está presente.
El uso de metodologías tradicionales es esencial al inicio en un equipo de desarrollo de
software.
Las metodologías ágiles se deberían aplicar en proyectos donde exista mucha incertidumbre
donde el entorno es volátil, donde los requisitos no se conocen con exactitud, mientras que
las metodologías tradicionales obligan al cliente a tomar las decisiones al inicio del proyecto.
16