04.01. ciclo vida
Embed Size (px)
Transcript of 04.01. ciclo vida

- 1
Fac. Informática - Universidad Nacional de La PlataMaestría Ingeniería de Software
Ciclo de Vida de Desarrollo de Software
Alejandro [email protected]
Administración de Proyectos 1er. Cuatrimestre 2006
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 2
Temario
• Ciclo de vida del software
• Modelos de proceso software• Ciclos de vida de desarrollo de software

- 2
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 3
Desarrollo de software
• En el proceso de desarrollo de software:
– conjunto de actividades que generan productos intermedios – los que, a su vez, son transformados en otros productos por otros
procesos.• El desarrollo puede verse como una cadena de actividades con
productos intermedios, esa visión es la de ciclo de vida.
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 4
Nacimiento
VidaMadurez y
muerte
Ciclo de vida
• Evoca la visión de los organismos vivientes• Puede verse como una secuencia de estados

- 3
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 5
Planeamiento
DesarrolloOperación
yMantenimiento
Ciclo de vida de sistemas
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 6
– Análisis de necesidades del usuario – Análisis de sistemas– Especificaciones de Requerimientos
– Diseño de alto nivel– Definición de la arquitectura de
software
– Diseños de programas
– Diseños de módulos– Diseños de bajo nivel
– Diseños de algoritmos
– Programas funcionando
REQUERIMIENTOS DEL SISTEMA
DISEÑO PRELIMINAR
DISEÑO DETALLADO
CODIGO
Modelo en cascada

- 4
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 7
Proceso
• Conjunto de pasos que involucran actividades, restricciones y recursos que producen un output de algún tipo
• Involucra: Técnicas, Herramientas, Procedimientos• Proceso. Secuencia de pasos ejecutadas con un propósito dado [IEEE-
STD-610].• Proceso Software. Un conjunto de actividades, métodos, prácticas y
transformaciones que la gente usa para desarrollar y mantener software y los productos asociados
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 8
Definiciones
• Técnica: conjunto de pasos a seguir para producir algún resultado
• Herramienta: es un instrumento o sistema automatizado para alcanzar algo en una forma mejor
• Método/Procedimiento: combinación de herramientas y técnicas que en conjunto producen un producto particular
• Ejemplo– Técnica: lectura de código– Herramienta: analizador de código– Método: inspección de código, que usa las dos anteriores
• Multiplicidad de categorías y definiciones

- 5
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 9
REQUERIMIENTOS DEL SISTEMA
DISEÑO PRELIMINAR
DISEÑO DETALLADO
CODIGO
Establecer requerimientos
Definir arquitectura
Diseñar módulos
Codificar
Delivery
Procesos de desarrollo de software
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 10
Modelo completo
Resultado
Requerimientos Diseño preliminar
Diseño detallado
Código
Necesidades
DeliveryDiseñar arquitectura
Especificar Requerimientos
Diseñar módulos
Codificar
PROJECT MANAGEMENT

- 6
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 11
Modelo abstracto
Resultado
Estado 1 Estado 2 …. Estado N
Necesidades
Actividad ZActividad BActividad A … ….
PROJECT MANAGEMENT
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 12
Nomenclatura
• Dos conceptos
– Ciclo de vida
= visión del proceso software que considera la presencia de productos– Ciclo de vida de software
=conjunto de métods que cubren el ciclo de vida completo: modelo de desarrollo incremental, uso de diseño estructurado
= proceso software = modelo de ciclo de vida= modelo de proceso software
• A los efectos de la preocupación en el proceso, se pueden considerar como sinónimos

- 7
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 13
Temario
• Ciclo de vida del software
• Modelos de proceso software• Ciclos de vida de desarrollo de software
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 14
El proceso por dentro
• Establece todas las principales actividades del proceso
• Utiliza recursos, sujeto a una serie de restricciones(tal como uncronograma) y genera productos intermedios y finales
• Puede estar compuesto por subprocesos que se encadenan de alguna manera
• Cada actividad del proceso tiene criterios de entrada y salida• Las actividades se organizan en una secuencia• Tiene una serie de principios-guía que explican los objetivos de cada
actividad• Las restriccioneso controles pueden ser de aplicación a una actividad,
recurso o producto

AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 15
Mapa conceptual del concepto de proceso
Proceso ActividadesIncluye
Recursos Utiliza
RestriccionesSujeto a
Subprocesos
Compuesto de
Criterios de entraday salida
Satisface
Secuencia de actividades
Organizadas por
Objetivos
Alcanza
Principios -guía
Tiene
Explica
Producto final
Produce
encadenan
Productos intermedios
Sujeto-a
Produce y procesa
Utiliza
Sujeto-a
Representación basada en las ideas de Pfleeger, S.L., Ingeniería de software. Teoría y práctica, 2002

- 8
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 15
Mapa conceptual del concepto de proceso
Proceso ActividadesIncluye
Recursos Utiliza
RestriccionesSujeto a
Subprocesos
Compuesto de
Criterios de entraday salida
Satisface
Secuencia deactividades
Organizadas por
Objetivos
Alcanza
Principios-guía
Tiene
Explica
Producto final
Produce
encadenan
Productos intermedios
Sujeto -a
Produce y procesa
Utiliza
Sujeto -a
Representación basada en las ideas de Pfleeger, S.L., Ingenier ía de software. Teor ía y práctica, 2002
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 16
El Proceso de desarrollo de procesos
es utilizado para desarrollar y evolucionar
El Proceso de Desarrollo de Software
es utilizado para desarrollar y evolucionar
Productos Software
son utilizados para desarrollar y evolucionar
Resultados para los usuarios
Process Engineering
Process Enactment
SoftwareEngineering
Process Enactment
Propiedades estáticas
Propiedades dinámicas
Propiedades estáticas
Propiedades dinámicas
Relaciones entre actividades de software y actividades de proceso
Estructura de los conceptos de proceso

- 9
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 17
¿Para qué modelos de proceso?
• Ayuda una comprensi ón común
• Ayuda encontrar inconsistencias, redundancias y omisiones• El modelo debería reflejar los objetivos de desarrollo • Permite evaluar actividades candidatas para atacar estos objetivos. • Permite la adecuación a cada situación especial
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 18
ARQUITECTURA DEL PROCESO
Adecuación
Adecuación
DISEÑO DEL PROCESO
Adecuación
DEFINICION DEL PROCESO
Adecuación
Evolución
Evolución
Desarrollo
Desarrollo
Evolución
Acciones y entidades de procesos (1/2)
A conceptual framework for consistently incorporating, relating, and tailoring process elements into enactableprocesses
An embodiment of a process architecture that establishes the architectural options and parameters, the existing elements to be reused, the structure and behavior of the new elements, and the relationships among these elements
An implementation of a process design in the form of a partially ordered set of process steps that is enactable
Process Model . An abstract representation of a process architecture, design, or definition
Feiler&Humphrey

- 10
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 19
Acciones y entidades de procesos (2/2)
DEFINICION DEL PROCESO
PROCESO “DISPONIBLE”
PROCESO EN ACCION
Intanciar
Iniciar
ESTADO DEL PROCESO
DISPONIBLEIntanciar
AGENTEEjecutar
Interactuar
PLAN DE PROCESO
PROCESO DE CONTROL
Planear
Analizar
Ajustar
Ajustar
AnalizarRESTRICCIONES
DE PROCESO
TRAZA DEL PROCESO
Analizar
Analizar
Monitorear
Monitorear
Ajustar
Adecuar
P.Disponible. An instance of a process definition that includes all the elements required for enactment
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 20
Modelos y métricas
• La mediciones capturan información sobre el proceso que se está ejecutando
• Permiten:– Evaluar el proceso– Profundizar el conocimiento del producto– Detectar las debilidades del ambiente– Proveer conocimiento sobre la mejora del proceso– Ayudar en la evolución del proceso

- 11
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 21
Modelo de proceso y métodos (Basili)
• Un modelo de proceso define la secuencia de métodos y el desarrollo de los documentos anexos
• Los métodos se determinarán por las necesidades:– las necesidades del problema– las necesidades del ambiente– la capacidad de integración de los métodos que requiere el modelo
de ciclo de vida
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 22
Modelo de proceso y métodos (Basili)
• Input: objetos sobre los que opera el método y el estado del ambiente en que se aplica
• Output: objetos que produce el método y cambios en el ambiente• Técnica: la tecnología básica a que se ejecuta, ej: el algoritmo que se
sigue• Formalidad: rigor con el que se aplica• Enfasis:conjunto de focos del método y técnica• Definición del método: modelo de proceso asociado con la aplicación de
la técnica• Perspectiva: punto de vista desde el cual se aplica el método y la técnica• Calidad del producto: conjunto de cualidades del output que interesan• Calidad del proceso: conjunto de cualidades del proceso

- 12
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 23
Table 1: Basic Unit Cell Specification
Specification Entry Conditions to be met before task initiation Exit Results produced
Feedback IN: Feedback from other cells OUT: Feedback to other cells
Task What is to be done (who, what, when)? Standards, procedures, and responsibilities.
Measurements Task, output, and feedback measures
Modelo de U. Massachussets
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 24
Temario
• Ciclo de vida del software
• Modelos de proceso software• Ciclos de vida de desarrollo de software
– Cascada– Prototipo– Mejora iterativa– Entrega en etapas
– Espiral– Reuso– Sistemas Web

- 13
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 25
Requerimientosde softtware
Diseño preliminar
Diseño detallado
Codificación
Testeo unitario
Testeo integración
Testeo sistema software
Operación y mantenimiento
Modelo cascada completo
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 26
Verificación del Diseño
Validación de los requerimientos
Requerimientosde softtware
Diseño preliminar
Diseño detallado
Codificación
Planeamientotesteo unitario
Testeo unitario
Planeamientotesteo
integración
Testeo integración
Planeamientotesteo sistema
de software
Testeo sistema de software
Visión de la calidad

- 14
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 27
Modelo de cascada clásico (Davis)
• Requiere definir qué hará el sistema antes de construírlo (REQUERIMIENTOS/DISEÑO)
• Requiere planear la interacción de las partes antes de construírlas (DISEÑO/CODIFICACION)
• Los gerentes deben seguir muy de cerca el proyecto y corregir muy tempranamente
• Requiere producir una serie de documentos que luego se usan en el testeo y mantenimiento
• Reduce los costos de desarrollo y mantenimiento como consecuencia de las razones anteriores
• Permite a la organización de desarrollo ser más estructurada y organizada
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 28
Fases conceptuales
Tiempo
Foco
Descubrimiento
Inven ción
Implementación
Copyright 1998 Steven C. McConnell. Reprinted with permission from Software Project Survival Guide (Microsoft Press, 1998).

- 15
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 29
Superposición de actividades
Arquitectura
Construcción
Documentación del usuario
Tiempoe
Planeamiento
Management
Desarrollo de requerimientos
Diseño Detallado
QA/Testeo de sistema
Checkpoint de revisón del plan
Copyright 1998 Steven C. McConnell. Reprinted with permission from Software Project Survival Guide (Microsoft Press, 1998).
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 30
Problemas del cascada
• El desarrollo de software es iterativo en su esencia
• ¿Cómo se transforman los productos?• El desarrollo es una actividad de resolución de problemas• En los hechos de una etapa se pasa a cualquiera de las otras• Se ha convertido en un “modelo ideal típico”

- 16
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 31
Prototipos : Tipologia
• Escenarios o simulaciones, herramienta para entender o validad los requerimientos del usuario
• Rápidos desechables, construcción “quick and dirty”que atacan un aspecto particular para que el usuario potencial lo utilice durante un tiempo y provea información al equipo.
• Evolutivos, atacan una funcionalidad acotada del sistema que resuelve algunos de los requerimientos del usuario.
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 32
Diseño preliminar
Diseño detallado
Codificación
Testeo unitario
Testeo integración
Testeo sistema software
Operación y mantenimiento
PROTOTIPO
Verificación
Validación
Modelo prototipoRequerimientos
de software

- 17
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 33
Diseño
Codificación
Testeo
Análisis
Diseño
Codificación
Testeo
Análisis
Modelo mejora iterativa
Requerimientosde softtware
Requerimientosde softtware
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 34
Requerimientosde softtware
Diseño preliminar
Delivery
Diseño detallado, Codificación,
Testeo, DeliveryDiseño detallado,
Codificación, Testeo y Delivery
Diseño detallado, Codificación,
Testeo y Delivery
Etapa 1
Etapa 2
Etapa n
Entrega en etapas

- 18
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 35
Hitos y fases principales
Beginning of Project
Project Launch/Feasibility Study
Preliminary Requirements Development
Detailed Requirements Development
Planning Checkpoint Review and Go/No Go Decision
Architecture
First Stage
Stage 1 Release
Second Stage
Stage 2 Release
Last Stage (assuming 3 stages)
Stage 3 Release
Release Preparations
Product Release
Mostly open-ended work
Mostly closed-ended work
0% 100% 10% 20% 30% 40% 50% 60% 70% 80% 90%
Copyright 1998 Steven C. McConnell. Reprinted with permission from Software Project Survival Guide (Microsoft Press, 1998).
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 36
Modelo espiral

- 19
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 37
Componentes del modelo
• Objetivos. Objetivo general a alcanzar, luego se ira desglosando en más niveles.
• Restricciones. Restricciones que se imponen al proyecto. • Alternativas. Se detallan las alternativas de solución. • Riesgos. Se detallan los riesgos que podría generar cada alternativa. • Resolución de Riesgos. Propuesta de solución a cada uno de los riesgos. • Plan de la etapa siguiente. Plan de la etapa siguiente. • Compromiso. Detalles de Compromisos para llevarla a cabo.
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 38
Diseño
Codificación
Testeo
Diseño
Codificación
Testeo
Sistema desarrollado previamente
Nuevo sistema a desarrollar
Requerimientosde softtware
Codificación
Testeo
Repositorio de software
Diseño
Modelo reuso
Requerimientosde softtware
Requerimientosde softtware

- 20
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 39
Procesos en la Web
Analogía basada en la experiencia actual, el diseño se basa en los recursos disponibles, enfoque de breadown (WBS)
VariasTecnología de estimación utilizada
Diseñadores gráficos, ingenieros en software con poca experiencia (2+ años), recientemente egresados
Ingenieros en software, como 5+ años de experiencia el más de un dominio de aplicación
Gente involucrada
Sistemas basados en objetos, muchas componentes reusables, pocas interfaces externas, relativamente simple
Basados en código, la mayoría nuevo, algún reuso, muchas interfaces externas, a menudo aplicaciones complejas
Producto desarrollado
Ad hocBasados en CMMProceso utilizado
Componentes, lenguajes de 4ta y 5ta generación (HTML, Java), visualización
OO, generadors, lenguajes modernos de programación (C++), herramientas CASE
Principal tecnología usada
RAD, contrucción en bloques, prototipos, UML
Clásico, basado en requerimientos, entrega por fases o incremental, uso de documentación
Enfoque de desarrollo
3-6 meses10-18 mesesDuración típica
Pequeño (3 a 5 miembros)Medio a grandeTamaño típico
Lanzar productos de calidad al mercado tan pronto como sea posible
Construir productos de software de calidad a un costo mínimo
Objetivo primario
Proyecto WebProyecto tradicionalCaracterística
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 40
SE y Web
• Está abierta la problemática de la Ingeniería Software para proyectos Web
• Web impacta a todo nivel:– Ciclo de vida del producto– Procesos– Project Management

- 21
AP-2006-Alejandro Oliveros Ciclo de vida de desarrollo de software 41
Referencias
• Zelkowitz, M.V., MSWE 607 Software Life Cycle Methods and Techniques, Maryland, 2000, Notas de aula
• McConnell, S., Software Project Survival Guide, MicrosoftPress, 1998, Redmond
• Reifer, D.J., “Web Development: Estimating Quick-to-Market Software”, IEEE Software, nov/dic 2000
• Feiler, P H and Humphrey, W S ‘Software process development andenactment: concepts and definitions’ in Proc. 2nd Int. Conf: SoftwareProcess, Berlin, Germany (25-26 February 1993) pp 28-39