sesion 4 - procesos del software
Post on 13-Jan-2016
12 Views
Preview:
DESCRIPTION
TRANSCRIPT
Sesión 4
Procesos del Software
Mg. Gustavo G. Delgado Ugarte
Proceso de Software
• Es un conjunto de actividades que conducen a la creación de un producto de software.
• Los procesos de software son complejos y dependen de las personas (decisiones, juicios)
Actividades Fundamentales
• Aunque existen muchos procesos diferentes de software, las actividades fundamentales son comunes para todos– Especificación de Software.- definir la funcionalidad
del software y las restricciones de operación– Diseño e Implementación del Software.- producir
software que cumpla la especificación– Validación del Software.- validar el software para
asegurarse que hace lo que el cliente desea– Evolución del software.- el software debe evolucionar
para cubrir las necesidades cambiantes
Modelos del proceso de software
• Un modelo de proceso de software, es una representación abstracta de un proceso de software
• Cada modelo de proceso, representa un proceso desde una perspectiva particular
Modelos de Procesos (Paradigmas)• Modelo de la cascada– Representa las actividades fundamentales del proceso
como fases separadas• Desarrollo Evolutivo– Entrelaza las actividades de especificación, desarrollo
y validación– Un sistema inicial se desarrolla rápidamente a partir
de especificación abstractas– El sistema se refina en base a peticiones del cliente
para producir un sistema que satisfaga sus necesidades
Modelos de Procesos (Paradigmas)
• Ingeniería de Software basada en Componentes– Se basa en la existencia de un número significativo
de componentes reutilizables– El proceso de desarrollo se enfoca en integrar
estos componentes en el sistema más que en desarrollarlos de cero
Modelos de Procesos (Paradigmas)
• Estos modelos son ampliamente utilizados• No se excluyen unos a otros, a menudo se
combinan en especial en desarrollo de sistemas grandes
Modelo en Cascada
Modelo en Cascada
• Primer modelo de proceso de desarrollo que fue publicado
• Se deriva de los procesos de ingeniería de sistemas más generales
• Se el conoce también como “ciclo de vida del software”
Etapas del Modelo
• Análisis y definición de requerimientos– Los servicios, metas y restricciones del sistema se
definen en base a consultas con los usuarios– Se definen en detalle y sirven como especificación
del sistema
Etapas del Modelo
• Diseño del sistema y del software– Proceso de Diseño del sistema• Divide los requerimientos en sistemas de hardware y
de software• Establece una arquitectura completa del sistema
– Diseño del software• Identifica y describe las abstracciones fundamentales
del sistema de software y sus relaciones
Etapas del Modelo
• Implementación y prueba de unidades– El diseño del software se lleva a cabo como un
conjunto o unidades de programas– La prueba de unidades implica verificar que cada
una cumpla su especificación
Etapas del Modelo
• Integración y pruebas del sistema– Los programas o las unidades individuales de
programas se integran y prueban como un sistema completo para asegurar que se cumplan los requerimientos del software
– Después de las pruebas, el sistema de software es entregado al cliente
Etapas del Modelo
• Funcionamiento y Mantenimiento– Esta suele ser la fase más larga del ciclo de vida– El sistema se instala y se pone en funcionamiento– El mantenimiento implica• Corregir errores no descubiertos en las etapas
anteriores del ciclo de vida• Mejorar la implementación de las unidades del sistema • Resaltar los servicios del sistema una vez que se
descubren nuevos requerimientos
Modelo en Cascada
• El resultado de cada fase es uno o más documentos aprobados (“Firmados”)
• La siguiente fase no debe empezar hasta que la previa haya finalizado
• El modelo no es lineal simple, implica una serie de interacciones entre actividades del desarrollo– Ej. En el diseño se identifican los problemas en los
requerimientos
Modelo en Cascada
• Las interacciones son costosas e implican rehacer el trabajo
• Durante el funcionamiento y mantenimiento– Se descubren errores y omisiones en los
requerimientos originales– Los errores en programación y diseño emergen– Se identifica la necesidad de nuevas funcionalidades
• Evolucionar un sistema para mantenerlo útil, implica repetir etapas previas del proceso
Modelo en Cascada
• Ventaja– La documentación se produce en cada fase
• Problema– Inflexibilidad al dividir el proyecto en diferentes
etapas– Se deben hacer compromisos en las etapas
iniciales, lo que hace difícil responder a los cambios de los requerimientos del cliente
Modelo en Cascada
• El modelo en cascada sólo se debe utilizar cuando los requerimientos se comprendan bien y sea improbable que cambien radicalmente durante el desarrollo del sistema
Desarrollo Evolutivo
Desarrollo Evolutivo
• Se basa en la idea de desarrollar una implementación inicial, exponiéndola a los comentarios del usuario y refinándola a través de diferentes versiones hasta que se desarrolla un sistema adecuado
• Las actividades de especificación, desarrollo y validación se entrelazan, con rápida retroalimentación entre estas
Tipos de Desarrollo Evolutivo
• Desarrollo exploratorio– El objetivo del proceso es trabajar con el cliente
para explorar sus requerimientos y entregar un sistema final
– El desarrollo inicia con las partes del sistema que se comprende mejor
– El sistema evoluciona agregando nuevos atributos propuestos por el cliente
Tipos de Desarrollo Evolutivo
• Prototipos desechables– El objetivo del proceso de desarrollo evolutivo es
comprender los requerimientos del cliente y desarrollar una definición mejorada de los requerimientos para el sistema
– El prototipo se centra en experimentar con los requerimientos del cliente que no se comprenden del todo
Desarrollo Evolutivo
• Ventaja– La especificación se puede desarrollar de una
manera creciente• Tan pronto el usuario desarrolle mejor entendimiento
de su problema, éste se puede reflejar en el sistema de software
Problemas del Desarrollo Evolutivo
• El proceso no es visible– Los administradores tiene que hacer entregas
regulares para medir el progreso– Si los sistemas se desarrollan rápidamente, no es
rentable producir documentos que reflejan cada versión del sistema
Problemas del Desarrollo Evolutivo
• A menudo los sistemas tienen una estructura deficiente– Los cambios continuos tienden a corromper la
estructura del software– Incorporar cambios en el sistema se convierte
cada vez más en una tarea difícil y costosa
Desarrollo Evolutivo
• Para sistemas pequeños y medianos, el enfoque evolutivo de desarrollo es el mejor.
• Para sistemas grandes, se recomienda un proceso mixto que incorpore las mejores características del modelo en cascada y del desarrollo evolutivo
Ingeniería del Software basada en Componentes (CBSE)
Ingeniería del Software basada en Componentes (CBSE)
• Es un enfoque basado en la reutilización– Se compone de una gran base de componentes de
software reutilizable y algunos marcos de trabajo de integración de estos componentes (frameworks)
– Algunos componentes son sistemas en si, que proporcionan alguna funcionalidad (COTS o sistemas comerciales)
Etapas de la CBSE
• Aunque las etapas de especificación de requerimientos y validación son similares con los anteriores procesos, las etapas intermedias, orientadas a la reutilización, son diferentes
Etapas de la CBSE
• Análisis de Componentes– Dada la especificación, se buscan los
componentes para implementarla– No existe concordancia exacta, los componentes
que se utilizan sólo proporcionan parte de la funcionalidad requerida
Etapas de la CBSE
• Modificación de Requerimientos– Los requerimientos se analizan utilizando
información acerca de los componentes que se han descubierto
– Los componentes se modifican para reflejar componentes disponibles
– Si las modificaciones no son posibles, la actividad de análisis de componentes se puede volver a realizar para buscar soluciones alternativas
Etapas de la CBSE
• Diseño del sistema con reutilización– Se diseña o reutiliza un marco de trabajo para el
sistema– Los diseñadores tienen en cuanta los
componentes que se reutilizan y organizan el marco de trabajo para que los satisfagan
– Si los componentes reutilizables no están disponibles, puede que se tenga que diseñar nuevo software
Etapas de la CBSE
• Desarrollo e integración– El software que no se pueda adquirir
externamente se desarrolla– Los componentes y los sistemas COTS se integran– La integración del sistema es parte del proceso de
desarrollo, más que una actividad separada
Ventaja de la CBSE
• Reducción la cantidad de software a desarrollarse
• Reducción de los costos• Reducción de los riesgos• Permite una entrega más rápida del software
Desventaja de la CBSE
• Los compromisos en los requerimientos son inevitables– Esto puede provocar que no se cumpla con las
necesidades reales de los usuarios
• Si las nuevas versiones de los componentes reutilizables no están bajo el control de la organización que los utiliza, se pierde parte de del control de la evolución del sistema
Iteración de Procesos
• Los cambios son inevitables en todo proyecto de software grande– Los requerimientos del software cambian en
respuesta a presiones externas sobre el negocio– Las prioridades de gestión cambian– Los diseños e implementación cambian, cuando la
tecnología cambia
Iteración de Procesos
• El proceso de software no es un proceso único; más bien, las actividades del proceso se repiten regularmente conforme el sistema se rehace en respuesta a peticiones de cambios
Modelos de Procesos Iterativos
• La esencia de los procesos iterativos es que la especificación se desarrolla junto con el software
Modelos de Procesos Iterativos
• Entrega Incremental– La especificación, diseño e implementación del
software se dividen en una serie de incrementos, los cuales se desarrollan por turnos
• Desarrollo en espiral– El desarrollo del sistema gira en espiral hacia
fuera, empezando con un esbozo inicial y terminando en el desarrollo final del mismo
Entrega Incremental
• El desarrollo en cascada– Implica que los requerimientos estén antes que
inicie el diseño, y que el diseño este antes que la implementación
– Cambios en los requerimientos implican rehacer el trabajo de captura de los mismos, el diseño y la implementación
– La separación en el diseño y la implementación dan lugar a sistemas bien documentados susceptibles al cambio
Entrega Incremental
• El desarrollo evolutivo– Permite que los requerimientos y las decisiones
de diseño se retrasen– Origina que un software pueda estar débilmente
estructurado y difícil de comprender y mantener
Entrega Incremental
• La entrega incremental es un enfoque intermedio que combina las ventajas de estos modelos
Entrega Incremental
• Los clientes identifican a grandes rasgos los servicios que proporcionará el sistema
• Se definen varios incrementos en donde cada uno proporciona un subconjunto de la funcionalidad del sistema– La asignación de los servicios a los incrementos es
en orden de prioridad, los de prioridad más alta primero
Entrega Incremental
• Una vez que los incrementos se han identificado, los servicios de cada incremento se definen en detalle y se desarrollan en turnos– Durante el desarrollo, se pueden llevar a cabo un
análisis adicional de los incrementos posteriores, pero no se aceptan cambios para el incremento actual
Entrega Incremental
• Una vez que el incremento se completa y entrega, el cliente lo puede poner en servicio– Entrega temprana– El cliente puede experimentar con el sistema• Clarifica los requerimientos de incrementos posteriores• Clarifica los requerimientos para la última versión del
incremento actual
• Tan pronto como se completan los nuevos incrementos, se integran a los existentes
Ventajas del Desarrollo Incremental
• Los clientes no tiene que esperar a que el sistema completo se entregue para sacar provecho de él
• Los clientes pueden usara los incrementos iniciales como prototipos y obtener experiencia sobre los requerimientos de los incrementos posteriores del sistema
Ventajas del Desarrollo Incremental
• Existe un bajo riesgo de fallo total del proyecto– Aunque se puedan encontrar problemas en
algunos incrementos, lo normal es que el sistema se entrega de manera satisfactoria
• Dado que los servicios de más alta prioridad se entregan primero, estos son a los que se les hace más pruebas (servicios importantes)
Desventajas del Desarrollo Incremental
• Los incrementos deben ser relativamente pequeños y cada incremento debe entregar alguna funcionalidad al sistema
• Puesto que los requerimientos no se definen en detalle hasta que se implementa un incremento, puede ser difícil identificar los recursos comunes que requieren todos los incrementos
Desarrollo en Espiral
Desarrollo en Espiral
• Propuesto por Barry Boehm (1988)• El proceso se representa como una espiral– Cada ciclo en el espiral representa una fase en el
proceso de software– Cada ciclo del espiral se divide en 4 sectores
Sectores del Espiral
• Definición de objetivos– Se definen los objetivos específicos– Se identifican las restricciones del proceso y del
producto– Se traza un plan detallado de gestión– Se identifican los riesgos del proyecto• Se planean estrategias alternativas según los riesgos
Sectores del Espiral
• Evaluación y reducción de riesgos– Se analiza detalladamente los riesgos del proyecto
identificados– Se definen los pasos para reducir los riesgos
• Desarrollo y validación– Se elige el modelo para el desarrollo del sistema• Se toma en consideración los riesgos evaluados
Sectores del Espiral
• Planificación– El proyecto se revisa y se toma la decisión de si se
debe continuar con un ciclo posterior de la espiral
Desarrollo en Espiral
• A diferencia de otros modelos, el modelo espiral considera explícitamente los riesgos
top related