procesos de software

19
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

Upload: tectijuana

Post on 12-Nov-2023

0 views

Category:

Documents


0 download

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