Professional Documents
Culture Documents
Modelos de Desarrollo
Para el desarrollo de cualquier producto de software se realizan una serie de
tareas entre la idea inicial y el producto final.
El ciclo de vida del proyecto ayuda a controlar las actividades del proyecto
desde el inicio al fin del mismo.
1. Es muy raro que los proyectos reales sigan el flujo secuencial que
propone el modelo. A pesar de que el modelo lineal incluye iteraciones, lo
hace de manera indirecta. Como resultado, los cambios confunden mientras
el equipo de proyecto actúa.
VENTAJAS...
DESVENTAJAS...
I. EL MODELO DE ESPIRAL
· Planificación
La determinación de los objetivos del proyecto, alternativas y restricciones.
· Análisis de Riesgo
El análisis de alternativas y la identificación y solución de riesgos.
· Ingeniería
Desarrollo del producto.
· Evaluación del cliente
El asentimiento de los resultados de la ingeniería.
VENTAJAS...
DESVENTAJAS...
✔ Es complicado.
✔ Requiere de mucha administración.
✔ Difícil de definir los objetivos, metas que indiquen que podemos
avanzar al siguiente ciclo.
✔ Se puede caer en un desarrollo de nunca acabar.
I. MODELO DE PROTOTIPOS
Es un método menos formal de desarrollo.
El prototipeo es una técnica para comprender las especificaciones.
Un prototipo puede ser eliminado.
Un prototipo puede llegar a ser parte del producto final.
· Investigación preliminar
· Diseño técnico
Durante la construcción del prototipo, el desarrollador ha obviado el diseño
detallado. El sistema debe ser entonces rediseñado y documentado según
los estándares de la organización y para ayudar a las mantenciones futuras.
Esta fase de diseño técnico tiene dos etapas: por un lado, la producción de
una documentación de diseño que especifica y describe la estructura del
software, el control de flujo, las interfaces de usuario y las funciones y,
como segunda etapa, la producción de todo lo requerido para promover
cualquier mantención futura del software.
· Programación y prueba
Es donde los cambios identificados en el diseño técnico son implementados
y probados para asegurar la corrección y completitud de los mismos con
respecto a los requerimientos.
· Operación y mantención
La instalación del sistema en ambiente de explotación, en este caso, resulta
de menor complejidad, ya que se supone que los usuarios han trabajado con
el sistema al hacer las pruebas de prototipos. Además, la mantención
también debería ser una fase menos importante, ya que se supone que el
refinamiento del prototipo permitiría una mejor claridad en los
requerimientos, por lo cual las mantenciones perfectivas se reducirían. Si
eventualmente se requiriese una mantención entonces el proceso de
prototipado es repetido y se definirá un nuevo conjunto de requerimientos.
La fase más importante corresponde a la definición de requerimientos, la
cual correspondería a un proceso que busca aproximar las visiones del
usuario y del desarrollador mediante sucesivas iteraciones. La definición de
requerimientos consiste de cinco etapas entre dos de las cuales se
establece un ciclo iterativo:
· Diseño y construcción
El objetivo de esta subfase es obtener un prototipo inicial. El desarrollador
debe concentrarse en construir un sistema con la máxima funcionalidad,
poniendo énfasis en la interface del usuario.
· Evaluación
Esta etapa tiene dos propósitos: extraer a los usuarios la especificación de
los requerimientos adicionales del sistema y verificar que el prototipo
desarrollado lo haya sido en concordancia con la definición de
requerimientos del sistema. Si los usuarios identifican fallas en el prototipo,
entonces el desarrollador simplemente corrige el prototipo antes de la
siguiente evaluación. El prototipo es repetidamente modificado y evaluado
hasta que todos los requerimientos del sistema han sido satisfechos. El
proceso de evaluación puede ser dividido en cuatro pasos separados:
preparación, demostración, uso del prototipo y discusión de comentarios. En
esta fase se decide si el prototipo es aceptado o modificado.
· Modificación
Esto ocurre cuando la definición de requerimientos del sistema es alterada
en la subfase de evaluación. El desarrollador entonces debe modificar el
prototipo de acuerdo a los comentarios hechos por los usuarios.
· Término
Una vez que se ha desarrollado un prototipo estable y completo, es
necesario ponerse de acuerdo en relación a aspectos de calidad y de
representación del sistema.
En la siguiente figura se puede ver un esquema en que estas etapas se
realizan, note que la especificación de requerimientos está claramente
diferenciada de las demás. Es en ella donde se utiliza el prototipado, ya que
permite entregar al usuario lo que sería una visión la solución final en
etapas tempranas del desarrollo, reduciendo tempranamente los costos de
especificaciones erróneas.
VENTAJAS...
DESVENTAJAS...
I. EL MODELO DE ETAPAS
Gustavo Donoso:
En 1956, el enfrentarse a un gran sistema de software como el
Semi−Automated Ground Environment (SAGE) hizo que se reconocieran los
· Plan operativo
Etapa donde se define el problema a resolver, las metas del proyecto, las
metas de calidad y se identifica cualquier restricción aplicable al proyecto.
· Especificación de requerimientos
Permite entregar una visión de alto nivel sobre el proyecto, poniendo
énfasis en la descripción del problema desde el punto de vista de los
clientes y desarrolladores. También se considera la posibilidad de una
planificación de los recursos sobre una escala de tiempos.
· Especificación funcional
Especifica la información sobre la cual el software a desarrollar trabajará.
· Diseño
Permite describir como el sistema va a satisfacer los requerimientos. Esta
etapa a menudo tiene diferentes niveles de detalle. Los niveles más altos de
detalle generalmente describen los componentes o módulos que formarán
el software a ser producido. Los niveles más bajos, describen, con mucho
detalle, cada módulo que contendrá el sistema.
· Implementación
Aquí es donde el software a ser desarrollado se codifica. Dependiendo del
tamaño del proyecto, la programación puede ser distribuida entre distintos
programadores o grupos de programadores. Cada uno se concentrará en la
construcción y prueba de una parte del software, a menudo un subsistema.
Las pruebas, en general, tiene por objetivo asegurar que todas las funciones
están correctamente implementadas dentro del sistema.
· Integración
Es la fase donde todos los subsistemas codificados independientemente se
juntan. Cada sección es enlazada con otra y, entonces, probada. Este
proceso se repite hasta que se han agregado todos los módulos y el sistema
se prueba como un todo.
· Validación y verificación
Una vez que el sistema ha sido integrado, comienza esta etapa. Es donde es
probado para verificar que el sistema es consistente con la definición de
requerimientos y la especificación funcional. Por otro lado, la verificación
consiste en una serie de actividades que aseguran que el software
implementa correctamente una función específica. Al finalizar esta etapa, el
sistema ya puede ser instalado en ambiente de explotación.
· Mantención
La mantención ocurre cuando existe algún problema dentro de un sistema
existente, e involucraría la corrección de errores que no fueron descubiertos
en las fases de prueba, mejoras en la implementación de las unidades del
sistema y cambios para que responda a los nuevos requerimientos. Las
mantenciones se puede clasificar en: correctiva, adaptativa, perfectiva y
preventiva.
VENTAJAS...
DESVENTAJAS...
DEFINICIONES:
CARACTERISTICAS DESEABLES
DE UNA METODOLOGIA
• Existencia de reglas predefinidas
• Cobertura total del ciclo de desarrollo
• Verificaciones intermedias
• Planificación y control
• Comunicación efectiva
• Utilización sobre un abanico amplio de proyectos
• Fácil formación
• Herramientas CASE
• Actividades que mejoren el proceso de desarrollo
• Soporte al mantenimiento
• Soporte de la reutilización de software
Una metodología de desarrollo de software es un conjunto de pasos y
procedimientos que deben seguirse para desarrollar software. Una
metodología está compuesta por:
✔ Cómo dividir un proyecto en etapas.
✔ Qué tareas se llevan a cabo en cada etapa.
✔ Qué restricciones deben aplicarse.
✔ Qué técnicas y herramientas se emplean.
✔ Cómo se controla y gestiona un proyecto.
Metodologías tradicionales
• Capability Maturity Model (SW-CMM)
• Capability Maturity Model Integration for Development (CMMI-DEV)
• Big Design Up Front (BDUF)
• Cleanroom Software Engineering
• Rational Unified Process (RUP)
El Proceso Unificado Racional (Rational Unified Process en inglés,
habitualmente resumido como RUP) es un proceso de desarrollo de
software 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.
El RUP no es un sistema con pasos firmemente establecidos, sino un
conjunto de metodologías adaptables al contexto y necesidades de cada
organización.
También se conoce por este nombre al software desarrollado por Rational,
hoy propiedad de IBM, el cual incluye información entrelazada de diversos
artefactos y descripciones de las diversas actividades. Está incluido en el
Rational Method Composer (RMC), que permite la personalización de
acuerdo a necesidades.
Originalmente se diseñó un proceso genérico y de dominio público, el
Proceso Unificado, y una especificación más detallada, el Rational Unified
Process, que se vendiera como producto independiente.
Equilibrar prioridades
Los requerimientos de los diversos participantes pueden ser diferentes,
contradictorios o disputarse recursos limitados. Debe encontrarse un
equilibrio que satisfaga los deseos de todos. Gracias a este equilibrio se
podrán corregir desacuerdos que surjan en el futuro.
Enfocarse en la calidad
El control de calidad no debe realizarse al final de cada iteración, sino en
todos los aspectos de la producción. El aseguramiento de la calidad forma
parte del proceso de desarrollo y no de un grupo independiente.
Ciclo de vida
• Control de cambios
• Modelado visual del software
• Verificación de la calidad del software
El RUP es un producto de Rational (IBM). Se caracteriza por ser iterativo e
incremental, estar centrado en la arquitectura y guiado por los casos de
uso. Incluye artefactos (que son los productos tangibles del proceso como
por ejemplo, el modelo de casos de uso, el código fuente, etc.) y roles
(papel que desempeña una persona en un determinado momento, una
persona puede desempeñar distintos roles a lo largo del proceso)....
Fases
• Establece oportunidad y alcance
• Identifica las entidades externas o actores con las que se trata
• Identifica los casos de uso
RUP comprende 2 aspectos importantes por los cuales se establecen las
disciplinas:
Proceso: Las etapas de esta sección son:
• Modelado de negocio
• Requisitos
• Análisis y Diseño
• Implementación
• Pruebas
• Despliegue
Soporte: En esta parte nos encontramos con las siguientes etapas:
• Gestión del cambio y configuraciones
• Gestión del proyecto
• Entorno
La estructura dinámica de RUP es la que permite que éste sea un proceso
de desarrollo fundamentalmente iterativo, y en esta parte se ven inmersas
las 4 fases descritas anteriormente:
• Inicio(También llamado Incepción)
• Elaboración
• Desarrollo(También llamado Implementación,Construcción)
• Cierre (También llamado Transición)
Artefactos
RUP en cada una de sus fases (pertenecientes a la estructura estática)
realiza una serie de artefactos que sirven para comprender mejor tanto el
análisis como el diseño del sistema (entre otros). Estos artefactos (entre
otros) son los siguientes:
Inicio:
• Documento Visión
• Especificación de Requerimientos
Elaboración:
Metodologías ágiles
• Extreme Programming (XP)
PROGRAMACIÓN EXTREMA XP
Metodología ágil basada en cuatro principios: simplicidad, comunicación,
retroalimentación y valor. Además, orientada por pruebas y refactorización,
se diseña e implementan las pruebas antes de programar la funcionalidad,
el programador crea sus propios tests de unidad.
Este método es típicamente atribuido a Kent Beck, Ron Jeffries y Ward
Cinningham. El objetivo de Xp son grupos pequeños y medianos de
construcción de software en donde los requisitos aún son muy ambiguos,
cambian rápidamente o son de alto riesgo. Xp busca la satisfacción del
cliente tratando de mantener durante todo el tiempo su confianza en el
producto. Además, sugiere que el lugar de trabajo sea una sala amplia, si es
posible sin divisiones (en el centro los programadores, en la periferia los
equipos individuales). Una ventaja del espacio abierto es el incremento en la
comunicación y el proporcionar una agenda dinámica en el entorno de cada
proyecto.
• Scrum
• Agile Modeling Adaptive Software Development (ASD)
• Crystal Clear
• Dynamic Systems Development Method (DSDM)