EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo...

34
EL PROCESO DE DESARROLLO EL PROCESO DE DESARROLLO DEL SOFTWARE DEL SOFTWARE No existe un proceso de No existe un proceso de software universal que software universal que sea efectivo para todos sea efectivo para todos los contextos de los contextos de proyectos de desarrollo. proyectos de desarrollo.

Transcript of EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo...

Page 1: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

EL PROCESO DE DESARROLLO EL PROCESO DE DESARROLLO DEL SOFTWAREDEL SOFTWARE

No existe un proceso de software No existe un proceso de software universal que sea efectivo para universal que sea efectivo para

todos los contextos de todos los contextos de proyectos de desarrollo. proyectos de desarrollo.

Page 2: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

ACTIVIDADES ACTIVIDADES FUNDAMENTALES DE TODOS FUNDAMENTALES DE TODOS LOS PROCESO DE SOFTWARELOS PROCESO DE SOFTWARE

Especificación de softwareEspecificación de software Diseño e ImplementaciónDiseño e Implementación ValidaciónValidación EvoluciónEvolución

Page 3: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

ALGUNOS MODELOS DE ALGUNOS MODELOS DE PROCESO DE SOFTWAREPROCESO DE SOFTWARE

Codificar y corregirCodificar y corregir Modelo en cascadaModelo en cascada Desarrollo evolutivoDesarrollo evolutivo Desarrollo formal de sistemasDesarrollo formal de sistemas Desarrollo basado en reutilizaciónDesarrollo basado en reutilización Desarrollo incrementalDesarrollo incremental Desarrollo en espiralDesarrollo en espiral

Page 4: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

CODIFICAR Y CORREGIR CODIFICAR Y CORREGIR (CODE-AND-FIX)(CODE-AND-FIX)

ETAPASETAPAS

Codificar parte del softwareCodificar parte del software

Corregir errores, agregar Corregir errores, agregar funcionalidad o nuevos elementos.funcionalidad o nuevos elementos.

Page 5: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

UTILIZACIÓNUTILIZACIÓN

Desarrollo de software tarea unipersonal.Desarrollo de software tarea unipersonal. El problema es claramente comprendido El problema es claramente comprendido El programador es el usuario de la El programador es el usuario de la

aplicación.aplicación. La aplicación es simple según estándares La aplicación es simple según estándares

actualesactuales

Page 6: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESVENTAJASDESVENTAJAS No se planifica ni se controla. No se planifica ni se controla. Después de una serie de cambios: Después de una serie de cambios:

La estructura del código se hace más y La estructura del código se hace más y más complicada más complicada

Los cambios siguientes son más y más Los cambios siguientes son más y más difíciles.difíciles.

Los resultados son menos confiables.Los resultados son menos confiables.

Page 7: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESVENTAJASDESVENTAJAS El software no satisface las necesidades ni El software no satisface las necesidades ni

las expectativas del cliente. las expectativas del cliente. La calidad no es adecuada. La calidad no es adecuada. Productos terminados fuera de plazo y Productos terminados fuera de plazo y

presupuesto. presupuesto. Cambios estructurales del software son casi Cambios estructurales del software son casi

imposibles. imposibles.

Page 8: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

CASCADACASCADA

Se popularizó en la década de los 70 y Se popularizó en la década de los 70 y guía la mayor parte de la práctica actual. guía la mayor parte de la práctica actual.

El proceso es una “cascada” de fases, El proceso es una “cascada” de fases, donde el producto de una fase es la donde el producto de una fase es la entrada de la siguiente. entrada de la siguiente.

Cada fase se compone de una serie de Cada fase se compone de una serie de actividades que deben realizarse en actividades que deben realizarse en paralelo. paralelo.

Page 9: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESCRIPCIÓNDESCRIPCIÓN Este modelo admite hacer iteraciones, Este modelo admite hacer iteraciones,

durante las modificaciones en el durante las modificaciones en el mantenimiento se puede ver por ejemplo la mantenimiento se puede ver por ejemplo la necesidad de cambiar algo en el diseño, lo necesidad de cambiar algo en el diseño, lo cual significa que se harán los cambios cual significa que se harán los cambios necesarios en la codificación y se tendrán necesarios en la codificación y se tendrán que realizar de nuevo las pruebas, si se tiene que realizar de nuevo las pruebas, si se tiene que volver a una de las etapas anteriores al que volver a una de las etapas anteriores al mantenimiento hay que recorrer de nuevo el mantenimiento hay que recorrer de nuevo el resto de las etapas.resto de las etapas.

Page 10: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

FASES MODELO CASCADAFASES MODELO CASCADA

Cada fase tiene como resultado documentos que deben ser aprobados por el usuario.

Page 11: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

Una fase no comienza hasta que Una fase no comienza hasta que termine la fase anterior y termine la fase anterior y generalmente se incluye la corrección generalmente se incluye la corrección de los problemas encontrados en de los problemas encontrados en fases previas.fases previas.

En la práctica, este modelo no es En la práctica, este modelo no es lineal, e involucra varias iteraciones e lineal, e involucra varias iteraciones e interacción entre las distintas fases de interacción entre las distintas fases de desarrollo.desarrollo.

Page 12: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

VENTAJASVENTAJAS La planificación es sencilla. La planificación es sencilla. La calidad del producto resultante es alta. La calidad del producto resultante es alta. Permite trabajar con personal poco cualificado.Permite trabajar con personal poco cualificado. Con este modelo se tiene un seguimiento de Con este modelo se tiene un seguimiento de

todas las fases del proyecto y de su todas las fases del proyecto y de su cumplimiento.cumplimiento.

Page 13: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESVENTAJASDESVENTAJAS

Necesidad de tener todos los requisitos al Necesidad de tener todos los requisitos al principio. principio.

Si se han cometido errores en una fase es Si se han cometido errores en una fase es difícil volver atrás. difícil volver atrás.

No se tiene el producto hasta el finalNo se tiene el producto hasta el final Si se comete un error en la fase de análisis no Si se comete un error en la fase de análisis no

lo descubrimos hasta la entrega, gasto inútil de lo descubrimos hasta la entrega, gasto inútil de recursos. recursos.

Page 14: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESVENTAJASDESVENTAJAS

El cliente no verá resultados hasta el final, El cliente no verá resultados hasta el final, con lo que puede impacientarse . con lo que puede impacientarse .

No se tienen indicadores fiables del No se tienen indicadores fiables del progreso del trabajoprogreso del trabajo

Es comparativamente más lento que los Es comparativamente más lento que los demás y el coste es mayor también.demás y el coste es mayor también.

Page 15: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

Tipos de proyectos para los Tipos de proyectos para los que es adecuadoque es adecuado

Aquellos con todas las Aquellos con todas las especificaciones desde el principio especificaciones desde el principio (reingeniería). (reingeniería).

Desarrollo de un tipo de producto que Desarrollo de un tipo de producto que no es novedoso. no es novedoso.

Proyectos complejos que se Proyectos complejos que se entienden bien desde el principio.entienden bien desde el principio.

Page 16: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

VARIACIONES DEL MODELO VARIACIONES DEL MODELO EN CASCADAEN CASCADA

CICLO DE VIDA EN V CICLO DE VIDA EN V

Propuesto por Alan Davis, tiene las mismas Propuesto por Alan Davis, tiene las mismas fases que el cascada pero se considera el nivel fases que el cascada pero se considera el nivel de abstracción de cada una. Una fase además de abstracción de cada una. Una fase además de utilizarse como entrada para la siguiente, de utilizarse como entrada para la siguiente, sirve para validar o verificar otras fases sirve para validar o verificar otras fases posteriores.posteriores.

Page 17: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

Ciclo de vida en V Ciclo de vida en V

Page 18: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

VARIACIONES DEL MODELO VARIACIONES DEL MODELO EN CASCADAEN CASCADA

CICLO DE VIDA TIPO SASHIMI CICLO DE VIDA TIPO SASHIMI

Se permite un solapamiento entre fases. Por Se permite un solapamiento entre fases. Por ejemplo, sin tener terminado del todo el ejemplo, sin tener terminado del todo el diseño se comienza a implementar. Una diseño se comienza a implementar. Una ventaja es que no necesita generar tanta ventaja es que no necesita generar tanta documentación debido a la continuidad del documentación debido a la continuidad del mismo personal entre fases.mismo personal entre fases.

Page 19: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESVENTAJASDESVENTAJAS

CICLO DE VIDA TIPO SASHIMICICLO DE VIDA TIPO SASHIMI

Más difícil controlar el progreso del Más difícil controlar el progreso del proyecto debido a que los finales de fase proyecto debido a que los finales de fase ya no son un punto de referencia claro. ya no son un punto de referencia claro.

Al hacer cosas en paralelo si hay Al hacer cosas en paralelo si hay problemas de comunicación pueden problemas de comunicación pueden surgir inconsistenciassurgir inconsistencias

Page 20: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

ESTRUCTURAESTRUCTURA Ciclo de vida tipo sashimi Ciclo de vida tipo sashimi

Page 21: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

ESTRUCTURAESTRUCTURA

CICLO DE VIDA TIPO SASHIMI CICLO DE VIDA TIPO SASHIMI

La fase de ``concepto'' consiste en definir los La fase de ``concepto'' consiste en definir los objetivos del proyecto, beneficios, tipo de objetivos del proyecto, beneficios, tipo de tecnología. El diseño arquitectónico es el de tecnología. El diseño arquitectónico es el de alto nivel, el detallado el de bajo nivel. alto nivel, el detallado el de bajo nivel.

Page 22: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

VARIACIONES DEL MODELO VARIACIONES DEL MODELO EN CASCADAEN CASCADA

CICLO DE VIDA EN CASCADA CON CICLO DE VIDA EN CASCADA CON SUBPROYECTOS SUBPROYECTOS

Al realizar el diseño arquitectónico, el sistema se Al realizar el diseño arquitectónico, el sistema se divide en varios subsistemas independientes entre divide en varios subsistemas independientes entre sí, estos se pueden desarrollar por separado y en sí, estos se pueden desarrollar por separado y en consecuencia en paralelo con los demás. Cada consecuencia en paralelo con los demás. Cada uno tendrá seguramente fechas de terminación uno tendrá seguramente fechas de terminación distintas. Una vez terminados todos se integran y distintas. Una vez terminados todos se integran y se prueba el sistema en conjunto. La ventaja es se prueba el sistema en conjunto. La ventaja es tener a más gente trabajando en paralelo de forma tener a más gente trabajando en paralelo de forma eficiente. El riesgo es que existan eficiente. El riesgo es que existan interdependencias entre los subproyectosinterdependencias entre los subproyectos

Page 23: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

VARIACIONES DEL MODELO VARIACIONES DEL MODELO EN CASCADAEN CASCADA

CICLO DE VIDA EN CASCADA CICLO DE VIDA EN CASCADA INCREMENTAL INCREMENTAL

Se va creando el sistema añadiendo pequeñas Se va creando el sistema añadiendo pequeñas funcionalidades. Cada uno de los pequeños funcionalidades. Cada uno de los pequeños incrementos es parecido a lo que ocurre dentro de incrementos es parecido a lo que ocurre dentro de la fase de mantenimiento. La ventaja es que no es la fase de mantenimiento. La ventaja es que no es necesario tener todos los requisitos en un necesario tener todos los requisitos en un principio. El inconveniente es que los errores en la principio. El inconveniente es que los errores en la detección de requisitos se encuentran tarde. detección de requisitos se encuentran tarde.

Page 24: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

ESTRUCTURAESTRUCTURA

Ciclo de vidaCiclo de vida

en cascada en cascada

incrementalincremental

Page 25: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

VARIACIONES DEL MODELO VARIACIONES DEL MODELO EN CASCADAEN CASCADA

CICLO DE VIDA EN CASCADA CON CICLO DE VIDA EN CASCADA CON REDUCCIÓN DE RIESGOSREDUCCIÓN DE RIESGOS

Uno de los problemas del ciclo de vida en Uno de los problemas del ciclo de vida en cascada es que si se entienden mal los cascada es que si se entienden mal los requisitos esto sólo se descubrirá cuando requisitos esto sólo se descubrirá cuando se entregue el producto. Para evitar este se entregue el producto. Para evitar este problema se puede hacer un desarrollo problema se puede hacer un desarrollo iterativo durante las fases de análisis y iterativo durante las fases de análisis y diseño globaldiseño global

Page 26: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESARROLLODESARROLLO CICLO DE VIDA EN CASCADA CON CICLO DE VIDA EN CASCADA CON

REDUCCIÓN DE RIESGOSREDUCCIÓN DE RIESGOS Preguntar al usuario. Preguntar al usuario. Hacer diseño global que se desprende del Hacer diseño global que se desprende del

punto 1. punto 1. Hacer un prototipo de interfaz de usuario, Hacer un prototipo de interfaz de usuario,

entrevistas con los usuarios, etc y volver entrevistas con los usuarios, etc y volver con ello al punto 1 para identificar más con ello al punto 1 para identificar más requisitos o corregir malentendidos. requisitos o corregir malentendidos.

El resto es igual al ciclo de vida en El resto es igual al ciclo de vida en cascada.cascada.

Page 27: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESARROLLO ITERATIVO DESARROLLO ITERATIVO INCREMENTALINCREMENTAL

Forma de reducir la repetición del trabajo Forma de reducir la repetición del trabajo en el proceso de desarrollo y dar en el proceso de desarrollo y dar oportunidad de retrasar la toma de oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir decisiones en los requisitos hasta adquirir experiencia con el sistema.experiencia con el sistema.

Es una combinación del Modelo de Es una combinación del Modelo de Cascada y Modelo Evolutivo.Cascada y Modelo Evolutivo.

Page 28: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESARROLLO ITERATIVO DESARROLLO ITERATIVO INCREMENTALINCREMENTAL

Bajo este modelo se entrega software “por Bajo este modelo se entrega software “por partes funcionales más pequeñas” , pero partes funcionales más pequeñas” , pero reutilizables, llamadas incrementos. Cada reutilizables, llamadas incrementos. Cada incremento se construye sobre aquel que ya incremento se construye sobre aquel que ya fue entregado.fue entregado.

Page 29: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESARROLLO ITERATIVO DESARROLLO ITERATIVO INCREMENTALINCREMENTAL

Este es Este es un modelo del tipo evolutivo, donde se un modelo del tipo evolutivo, donde se permiten y esperan probables cambios en los permiten y esperan probables cambios en los requisitos en tiempo de desarrollo; se admite requisitos en tiempo de desarrollo; se admite margen para que el software pueda evolucionar. margen para que el software pueda evolucionar. Aplicable cuando los requisitos son Aplicable cuando los requisitos son medianamente bien conocidos pero no son medianamente bien conocidos pero no son completamente estáticos y definidos.completamente estáticos y definidos.

Page 30: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESARROLLO ITERATIVO DESARROLLO ITERATIVO INCREMENTALINCREMENTAL

La Descripción del Sistema es esencial La Descripción del Sistema es esencial para especificar y confeccionar los para especificar y confeccionar los distintos incrementos hasta llegar al distintos incrementos hasta llegar al Producto global y final. Las actividades Producto global y final. Las actividades concurrentes (Especificación, Desarrollo concurrentes (Especificación, Desarrollo y Validación) sintetizan el desarrollo y Validación) sintetizan el desarrollo pormenorizado de los incrementos, que pormenorizado de los incrementos, que se hará posteriormentese hará posteriormente..

Page 31: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.
Page 32: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESARROLLO ITERATIVO DESARROLLO ITERATIVO INCREMENTALINCREMENTAL

Durante el desarrollo de cada Durante el desarrollo de cada incremento se puede utilizar el modelo incremento se puede utilizar el modelo de cascada o evolutivo, dependiendo de cascada o evolutivo, dependiendo del conocimiento que se tenga sobre del conocimiento que se tenga sobre los requisitos a implementar. los requisitos a implementar.

Page 33: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

VENTAJASVENTAJAS No se espera hasta el fin del desarrollo para No se espera hasta el fin del desarrollo para

utilizar el sistema. utilizar el sistema. Se pueden aclarar requisitos conforme se Se pueden aclarar requisitos conforme se

entrega el sistema.entrega el sistema. Se disminuye el riesgo de fracaso de todo el Se disminuye el riesgo de fracaso de todo el

proyecto, ya que se puede distribuir en cada proyecto, ya que se puede distribuir en cada incremento.incremento.

Las partes más importantes del sistema son Las partes más importantes del sistema son entregadas primero, por lo cual se realizan más entregadas primero, por lo cual se realizan más pruebas en estos módulos y se disminuye el pruebas en estos módulos y se disminuye el riesgo de fallos.riesgo de fallos.

Page 34: EL PROCESO DE DESARROLLO DEL SOFTWARE No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

DESVENTAJASDESVENTAJAS Cada incremento debe ser pequeño para Cada incremento debe ser pequeño para

limitar el riesgo (menos de 20.000 líneas).limitar el riesgo (menos de 20.000 líneas). Cada incremento debe aumentar la Cada incremento debe aumentar la

funcionalidad.funcionalidad. Es difícil establecer las correspondencias Es difícil establecer las correspondencias

de los requisitos contra los incrementos.de los requisitos contra los incrementos. Es difícil detectar las unidades o servicios Es difícil detectar las unidades o servicios

genéricos para todo el sistema.genéricos para todo el sistema.