procesos de software
TRANSCRIPT
1
1
✔ Modelos de proceso✔ Procesos iterativos✔ Especificación ✔ Diseño e Implementación✔ Validación ✔ Evolución ✔ Soporte automático de procesos
1. Procesos de software
Modelos de proceso
✔ ¿Qué es un proceso sw?
Es un conjunto estructurado de actividades para:❍ Especificar,❍ Diseñar,❍ Implementar, y❍ Probar sistemas sw
✔ ¿Qué es un modelo de proceso sw?
Es una representación abstracta de un proceso.
Representa una descripción de un proceso desde una perspectiva particular
2
Modelos de proceso genéricos
✔ Modelo en cascadaSepara y distingue las distintas fases de especificación y desarrollo
✔ Desarrollo evolutivoIntercala las fases de especificación y desarrollo
✔ Desarrollo formal de sistemasConstruye un modelo matemático del sistema que se transforma formalmente en una implementación
✔ Desarrollo basado en reutilizaciónEl sistema se construye ensamblando componentes ya existentes
Modelo en cascada
Requirementsdefinition
System andsoftware design
Implementationand unit testing
Integration andsystem testing
Operation andmaintenance
Definición de requerimientos
Diseño
Implementación y pr. de unid.
Integración y pr. del sistema
Puesta en marcha y mantenimiento
3
Desarrollo evolutivo (I)
✔ Desarrollo explorativo ❍ El objetivo es trabajar con el cliente y hacer
evolucionar un sistema final a partir de un esbozo de una especificación inicial.
❍ El desarrollo comienza con aquellas partes mejor comprendidas del sistema
✔ Prototipado❍ El objetivo es comprender los requerimientos del
sistema. ❍ El prototipo se centra en aquellas partes que el
cliente tiene "poco claras"
Desarrollo evolutivo (II)
ValidationFinal
version
DevelopmentIntermediate
versions
SpecificationInitial
version
Outlinedescription
Concurrentactivities
Actividades concurrentes
Especificación
Desarrollo
Validación
Esbozo de descripción
Versión inicial
Versiones intermedias
Versión final
4
Desarrollo formal de sistemas (I)
✔ Basados en la transformación de una especificación matemática a través de diferentes representaciones hasta obtener un programa ejecutable
✔ Las transformaciones preservan la corrección de las especificaciones. Esto es importante para mostrar que el programa cumple con sus especificaciones
✔ El desarrollo formal se utiliza en la aproximación de "Sala limpia" (‘Cleanroom’) de desarrollo de sw.
Desarrollo formal de sistemas (II)
Requirementsdefinition
Formalspecification
Formaltransformation
Integration andsystem testing
R2Formal
specificationR3
Executableprogram
P2 P3 P4
T1 T2 T3 T4
Formal transformations
R1
P1
Def. requerim.
Especific. formal
Transform. formal
Integrac. y prueb. sist.
Especificac. formal
Programa ejecutable
TRANSFORMACIONES FORMALES
5
Modelos que usan reutilización (I)
✔ Basados en la reutilización sistemática. Los sistemas se integran a partir de componentes existentes: COTS (Commercial-off-the-shelf) systems
✔ Etapas del proceso❍ Análisis de componentes
❍ Modificación de requerimientos❍ Diseño del sistema con reutilización
❍ Desarrollo e integración
✔ Esta aproximación tiene cada vez más importancia. Aunque no se tiene mucha experiencia en ella
Modelos que usan reutilización (II)
Requirementsspecification
Componentanalysis
Developmentand integration
System designwith reuse
Requirementsmodification
Systemvalidation
Especif. requerim.
Análisis de compon.
Modificac. requerim.
Diseño sistema
Desarrollo & Integrac.
Validación sistema
6
Modelos iterativos
✔ Los requerimientos del sistema SIEMPRE evolucionan durante un proyecto. La iteración del proceso, en donde se modifican etapas previas son siempre necesarias en sistemas grandes
✔ Las iteraciones pueden aplicarse a cualquiermodelo genérico de proceso
✔ Aproximaciones:❍ Desarrollo incremental❍ Desarrollo en espiral
Desarrollo incremental (I)
✔ En lugar de entregar el sistema de una sola vez, el desarrollo y se divide en incrementos que son entregados al cliente. Cada incremento contiene parte de las funcionalidades requeridas
✔ Los requerimientos del usuario se priorizan, de forma que los de mayor prioridad se entregan antes
✔ Una vez que el desarrollo comienza, los requerimientos se "congelan", aunque los requerimientos de posteriores incrementos continuan evolucionando
7
Desarrollo incremental (II)
Validateincrement
Develop systemincrement
Design systemarchitecture
Integrateincrement
Validatesystem
Define outline requirements
Assign requirements to increments
System incomplete
Finalsystem
Esbozo def. de requer.
Asig. requer. a incrementos
Diseño arq. sistema
Desarr. incremento
Validación incremento
Integrac. incremento
Validación sistema
Sistema incompleto
Sistema final
Programación extrema (I)
✔ Extreme programming: es una nueva aproximación basada en el desarrollo y entrega de pequeños incrementos de funcionalidades
✔ Se realiza una constante mejora de código, una implicación del usuario en el grupo de trabajo y programación por parejas (pairwise programming)
8
Programación extrema (II)
Desarrollo en espiral (I)
✔ El proceso es representado como una espiral. Cada uno de los bucles representa una fase en el proceso
✔ No hay fases fijas (tales como especificación o diseño). Los bucles de la espiral se eligen dependiendo de lo que se vaya necesitando
✔ Los riesgos se evalúan explícitamente y se resuelven a lo largo del proceso
9
Desarrollo en espiral (II)
Riskanalysis
Riskanalysis
Riskanalysis
Riskanalysis Proto-
type 1
Prototype 2
Prototype 3Opera-tionalprotoype
Concept ofOperation
Simulations, models, benchmarks
S/Wrequirements
Requirementvalidation
DesignV&V
Productdesign Detailed
design
CodeUnit test
IntegrationtestAcceptance
testService Develop, verifynext-level product
Evaluate alternativesidentify, resolve risks
Determine objectivesalternatives and
constraints
Plan next phase
Integrationand test plan
Developmentplan
Requirements planLife-cycle plan
REVIEW
Determinac. objetivos, alternativas y restricciones
Evaluar alternativas. Identif. y resolver riesgos
Planif. fase siguenteDearrollar y verificar sig.
nivel
Especificación del software (I)
✔ Es el proceso de establecer qué servicios se requieren y cuáles son las restricciones sobre las operaciones y el desarrollo
✔ Proceso de ingeniería de requerimientos❍ Estudio de factibilidad
❍ Elicitación y análisis de requerimientos❍ Especificación de requerimientos
❍ Validación de requerimientos
10
Especificación del software (II)
INGENIERÍA DE REQUERIMIENTOS
Feasibilitystudy
Requirementselicitation and
analysisRequirementsspecification
Requirementsvalidation
Feasibilityreport
Systemmodels
User and systemrequirements
Requirementsdocument
Estudio factibilidad
Elicitación y Analisis
requerim.
Estudio factibilidad
Especific. requerim.
Validación requerim.
Infomefactibilidad
Modelos del sistema
Req. usuario y del sistema
Documento de requerim.
Diseño e implementación
✔ Es el proceso de convertir la especificación del software en un sistema ejecutable
✔ Diseño del software❍ Se determina la estructura (arquitectura) del software
que implementará la especificación.
✔ Implementación❍ Trasladar la estructura anterior a un programa
ejecutable
✔ Las actividades de diseño e implementación están estrechamente relacionadas, y pueden entrelazarse
11
Actividades de diseño
✔ Diseño arquitectónico
✔ Especificación abstracta
✔ Diseño de la interfaz
✔ Diseño de componentes
✔ Diseño de la estructura de datos
✔ Diseño del algoritmo
El proceso de diseño
Architecturaldesign
Abstractspecification
Interfacedesign
Componentdesign
Datastructuredesign
Algorithmdesign
Systemarchitecture
Softwarespecification
Interfacespecification
Componentspecification
Datastructure
specification
Algorithmspecification
Requirementsspecification
Design activities
Design products
Especif. requerim.
Diseño arquit.
Espec. abstrac.
Diseño interfaz
Diseño compon.
Diseño estruc. datos
Diseño algorit.
Arquit. sistema
Especif. software
Especif. interfaz
Especif. compon.
Espec. estruc. datos
Especif. algorit.
Actividades de diseño
Productos de diseño
12
Programación y depuración
✔ Convertir el diseño en un programa y eliminar los errores del mismo
✔ La programación es una actividad personal: no hay un proceso genérico de programación
✔ Los programadores llevan a cabo algunas pruebas sobre el mismo para descubrir fallos en el programa y eliminarlos en el proceso de depuración
El proceso de depuración
Locateerror
Designerror repair
Repairerror
Re-testprogram
Localizar el error
Diseñar la repar. error
Reparar error
Probar programa
13
Validación
✔ La verificación y validación pretenden mostrar que un sistema cumple con su especificación y satisface los requerimientos del cliente
✔ Implica procesos de comprobación, prueba y revisiones del sistema.
✔ La prueba del sistema implica ejecutar el sistema con casos de prueba derivados de la especificación utilizando datos reales para ser procesados por él mismo (pruebas dinámicas)
El proceso de prueba
Sub-systemtesting
Moduletesting
Unittesting
Systemtesting
Acceptancetesting
Componenttesting
Integration testing Usertesting
Pruebas unidad
Pruebas módulo
Pruebas subsistema
Pruebas sistema
Pruebas aceptac.
Pruebas de usuario
Pruebas de integraciónPruebas de
componentes
14
Fases del proceso de prueba
Requirementsspecification
Systemspecification
Systemdesign
Detaileddesign
Module andunit codeand tess
Sub-systemintegrationtest plan
Systemintegrationtest plan
Acceptancetest plan
Service Acceptancetest
Systemintegration test
Sub-systemintegration test
Especif. requerim.
Especif. sistema
Diseño sistema
Diseño detallado
Pruebas unidad y módulo
Pr. integr. subsist.
Pr. integr. sistema
Pruebas aceptac.
Servicio
Plan prueb.
aceptac.
Plan integrac. sistema
Plan integrac. subsist.
Evolución del software (I)
✔ El software es inherentemente flexible y puede cambiar
✔ Así como cambian los requerimientos según las circustancias del sistema, el software que soporta dicho sistema puede también evolucionar y cambiar
✔ Si bien hay una diferencia clara entre desarrollo y evolución (mantenimiento), dicha diferencia se convierte en irrelevante desde el momento en que cada vez menos sistemas son completamente nuevos
15
Evolución del software (II)
Assess existingsystems
Define systemrequirements
Propose systemchanges
Modifysystems
Newsystem
Existingsystems
Definir requer. sistema
Evaluar sist. actual
Proponer cambios sist.
Modificar sistema
Nuevo sistema
Sistemas existentes
Soporte automático del proceso✔ La ingeniería del software ayudada por computador
(CASE) se refiere al software que soporta el proceso de desarrollo y evolución del software
✔ Automatización de actividades❍ Editores gráficos para modelados de sistemas
❍ Diccionario de datos para gestionar las entidades de diseño
❍ Herramientas visuales para la construcción de la interfaz
❍ Depuradores para soportar la búsqueda de errores
❍ Generadores de código para generar nuevas versiones de los programas
16
Tecnología CASE
✔ La tecnología Case ha conseguido mejoras significativas en el proceso de desarrollo de software, aunque no en el orden de magnitud en que fue predicho❍ La ingeniería del software requiere creatividad, lo
cual no es fácilmente automatizable
❍ La ingeniería del software es una actividad de grupoy en grandes proyectos se consume mucho tiempo en interacciones entre el grupo. La tecnología CASE no soporta realmente este hecho
Clasificación CASE
✔ Nos ayuda a entender los diferentes tipos de herramientas CASE y el soporte que proporcionan a las actividades del proceso de desarrollo de sw
✔ Perspectiva funcional ❍ Clasificación según su función específica
✔ Perspectiva del proceso❍ Clasificación según las actividades del proceso que
soportan
✔ Perspectiva de integración❍ Clasificación de acuerdo a su organización en
unidades integradas
17
Clasificación funcionalTool type ExamplesPlanning tools PERT tools, estimation tools,
spreadsheetsEditing tools Text editors, diagram editors, word
processorsChange management tools Requirements traceability tools, change
control systemsConfiguration management tools Version management systems, system
building toolsPrototyping tools Very high-level languages,
user interface generatorsMethod-support tools Design editors, data dictionaries, code
generatorsLanguage-processing tools Compilers, interpretersProgram analysis tools Cross reference generators, static
analysers, dynamic analysersTesting tools Test data generators, file comparatorsDebugging tools Interactive debugging systemsDocumentation tools Page layout programs, image editorsRe-engineering tools Cross-reference systems, program re-
structuring systems
Clasif. según actividadesReengineering tools
Testing tools
Debugging tools
Program analysis tools
Language-processingtools
Method support tools
Prototyping tools
Configurationmanagement tools
Change management tools
Documentation tools
Editing tools
Planning tools
Specification Design Implementation Verificationand
Validation
18
Clasif. según integración (I)
✔ Herramientas❍ Soportan tareas individuales del proceso, tales como
comprobación de consistencia del diseño, edición de textos, etc.
✔ Bancos de trabajo (Workbenches)❍ Soportan una fase del proceso, como especificación
o diseño. Normalmente incluyen varias herramientas integradas
✔ Entornos❍ Soportan todo o una parte sustancial del proceso
software. Normalmente incluyen varios bancos de trabajo
Clasif. según integración (II)
Single-methodworkbenches
General-purposeworkbenches
Multi-methodworkbenches
Language-specificworkbenches
Programming TestingAnalysis and
design
Integratedenvironments
Process-centredenvironments
FilecomparatorsCompilersEditors
EnvironmentsWorkbenchesTools
CASEtechnology
19
Puntos clave
✔ Los procesos sw son actividades relacionadas con la producción y evolución de un sistema software. Dichos procesos se representan en un modelo de procesos sw
✔ Las actividades generales son especificación, diseño e implementación, validación y evolución
✔ Los modelos genéricos de procesos sw describen la organización de los procesos sw
✔ Los modelos de proceso iterativos describen los procesos sw como un ciclo de actividades