CAPITULO ICAPITULO Icotana.informatica.edu.bo/downloads/procesos.pdf · 2018-08-27 · desarrollode...

Post on 25-Jul-2020

9 views 0 download

Transcript of CAPITULO ICAPITULO Icotana.informatica.edu.bo/downloads/procesos.pdf · 2018-08-27 · desarrollode...

CAPITULO ICAPITULO I

1.2 EL PROCESO

Resumen preparado por Miguel Cotaña

Ingeniería de SoftwareINF - 163

La construcción del software de ordenador es un proceso iterativode aprendizaje y el resultado esuna materialización del conocimiento recolectado, depurado y organizado conformeel proceso estuvo en ejecución

Existen mecanismos de evaluación del proceso de software que permiten a lasorganizaciones determinar la “madurez” del proceso de software. No obstante, la calidad, el tiemporequerido, la viabilidad a largo plazodel producto que se construye son los mejores indicadores de la eficacia del proceso que se utiliza.

Que es un proceso?Que es un proceso?

Una secuencia de pasos desarrollados para un propósito dado, por ejemplo, el proceso de desarrollo de software (IEEE-STD-610).

Curso de acción o manera de proceder(diccionario Oxford)

Un sistema de operaciones para producir algo…Un conjunto de acciones, cambios o funcionesque logran un resultado final (diccionarioWebmaster)

Conjunto de actividades relacionadas que son ejecutadas en respuesta a necesidadespreviamente determinadas y consumiendorecursos para producir un producto (J. Moore)

Tres aspectos del procesoTres aspectos del proceso

1.- Definición del procesoUn proceso debe estar definido (documento queespecifica actividades y procedimientos del proceso)

2.- Aprendizaje del procesoEl conocimiento del proceso debe ser transferido a las personas (agentes) que lo ejecutarán

3.- Resultados del procesoManifestación de los productos, como resultadode la ejecución de las actividades definidas porel proceso

Consideraciones acerca de los procesosConsideraciones acerca de los procesos

Los comportamientos, actividades y tareas que desempeñamos para lograrun objetivo representan la ejecución del proceso para alcanzar dichoobjetivo.Un proceso disciplinado se

manifestará en patrones ordenados y consistentes de comportamientoindividual o grupalPor tanto, un proceso da forma a las

acciones y reacciones y tomamosfrente a una determinada situación.

Proceso internalizado y proceso institucionalizadoProceso internalizado y proceso institucionalizado

Cuando un proceso es desarrolladoprofesional y naturalmente por unapersona, se dice que el proceso esta“internalizado” por la persona.

En las organizaciones los procesosson comunes a grupos de personas. Para obtener disciplina en los procesos, estos deben ser establecidos como“institucionalizados” en la organización.

Completitud y disciplina en los procesosCompletitud y disciplina en los procesos

Un proceso es incompleto si:a) El documento de definición existepero no todos saben de su existenciab) El documento de definición existe, pero no hay capacitación en el proceso. Se deja a iniciativa del equipo aprenderel procesoc) El documento de definición existe, existe capacitación, pero no hay monitoreo y el proceso NO es forzado a su cumplimiento. Algunos lo siguen y otros no

Un proceso es disciplinado solo si se cumplen las siguientes condiciones:a) El proceso esta debidamentedocumentadob) Existe y se realiza capacitación formal sobre el procesoc) Las personas siguen lo establecidopor el proceso como una manera natural de desempeñar sus actividadesd) El proceso es monitoreado y sucumplimiento es obligatorio.

Ingenieria del softwareIngenieria del software

[Ingeniería de software es] el establecimiento y uso de principiosde ingeniería adecuados para obtenereconómicamente software que sea confiable y trabaje eficientemente en máquinas reales (Fritz Bauer)

teoria practica

Resolucion

de

problemas

Administracion

y gestion

Pruebas y

control de

calidad

DefinicionDefinicion

La ingeniería de software no es cienciainformática.

“Un científico construye con el objetivo de aprender, un ingeniero aprende con el objetivode construir”

La distinción entre ingeniería y cienciaen el software es el mismo que en otrasdisciplinas

“Los científicos aprenden lo que es verdadero y cómo extender el conocimiento en su campo”

“Los ingenieros aprenden lo que es verdadero, lo que es útil y cómo aplicar conocimiento biénentendido para resolver problemas prácticos”

Científicos

� Conocimientos enfocados y especializados

� Reportan básicamente a sus colegas científicos

� No necesitan licencia

Ingenieros

� Conocimientos comprobados, efectivos y confiablesde ámbito más general

� Se necesita un amplio entendimiento de todos los factores que intervienen en el desarrollo del producto.

� Responsabilidad con el publico

� Generalmente necesitan licencia para ejercer

El producto software es enteramenteconceptual.

No tiene propiedades físicas como peso, color o voltaje, y en consecuencia no estásujeto a leyes físicas o eléctricas.

Su naturaleza conceptual crea una distanciaintelectual entre el software y el problemaque el software resuelve

Dificil para una persona que entiende el problema, entender el sistema software quelo resuleve.

Para probar es necesario de un sistemafísico.

Peculiaridades de la I.S.Peculiaridades de la I.S.

En el ámbito académico, existen 5 áreas de conocimiento y capacidades necesarias parael ingeniero de software:

� Ciencias de la computación, ingeniería de sistemas y de software.

� Plataformas específicas de hardware

� Dominio de conocimiento de la aplicación

� Habilidades personales, interpersonales y ética.

� Cultura empresarial.

Areas del conocimientoAreas del conocimiento

Definición (Qué ?)

Desarrollo (Cómo ?)

Soporte (cambios)

� Corrección

� Adaptación

� Mejora

� Prevención

Fases genericas de la I.S.Fases genericas de la I.S.

IngenierIngenieríía a

de softwarede software

Gestion de proyectos

Informatica

y tecnologia

Seguridad

Confiabilidad

Gestion de la calidad

Dominios de las

aplicaciones

Relacion con otras disciplinasRelacion con otras disciplinas

Ingenieria del software: tecnologia estratificadaIngenieria del software: tecnologia estratificada

Definicion segun el IEEEDefinicion segun el IEEE

La ingenieria de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimientodel software; es decir, la aplicación de la ingeniería al software

La I.S. es una tecnología estratificadaLa I.S. es una tecnología estratificada

Cualquier enfoque de la ingeniería debeestar sustentado en un compromiso con la calidad.

La gestión de la calidad Total, Sigma Seis y enfoques similares fomentan unacultura de mejora continua del proceso, y es esta cultura la que al final conduce al desarrollo de enfoques muy efectivospara la I.S.

El enfoque de calidad soporta a la I.S.El enfoque de calidad soporta a la I.S.

Software EngineeringIngeniería de Software

enfoqueenfoque de de ““calidadcalidad””

modelomodelo de de procesoproceso

mméétodostodos

herramientasherramientas

La base de la I.S. es el estrato del proceso. El proceso es el elemento quemantiene juntos los estratosde la tecnologia y que permiteel desarrollo racional y a tiempo del software.

Modelo de procesoModelo de proceso

El proceso del software forma la base para el control de la gestión de los proyectos de software y establece el contexto en el cualse aplican los métodos técnicos, se generan los productos del trabajo (modelos, documentos, datos, reportes, formatos), se establecen los fundamentos, se asegura la calidad, y el cambio se maneja de manera apropiada.

Los métodos de la I.S., proporcionan los “cómo” técnicos para construir software. Abarcan un amplio espectro de tareas queincluyen la:� Comunicación, � El análisis de requisitos,� El modelado del diseño,� La construccion del programa,� La realizacion de pruebas,� El soporte

Los métodos se basan en un conjunto de principios básicos que gobierna cada área de la tecnologia.

MétodosMétodos

Las herramientas de la I.S., proporcionanel soporte automatizado o semiautomatizado para el proceso y los métodos.

Cuando las herramientas se integran de forma que la información que cree una de ellas pueda usarla otra, se dice que se ha establecido un sistema para el soportedel desarrollo del software, que con frecuencia se denomina “ingeniería del software asistida por ordenador”

HerramientasHerramientas

MARCO DE TRABAJO PARA EL PROCESOMARCO DE TRABAJO PARA EL PROCESO

Un marco de trabajo establece la base

para un proceso de software completo al

identificar un numero pequeño de

actividades del marco de trabajo

aplicables a todos los proyectos de

software, sin importar su tamaño y

complejidad.

Abarca un conjunto de actividades

sombrilla aplicables a lo largo del

proceso del software.

Cada actividad dentro del marco de

trabajo contiene un conjunto de

acciones de ingeniería del software; es

decir, una serie de tareas relacionadas

que produce un producto del trabajo en

la I.S. (por ejemplo, el diseño es una

acción de la I.S.).

Cada acción la forman tareas de trabajo

individuales que completan alguna parte

del trabajo implicado por la acción.

Marco de trabajo del proceso de softwareMarco de trabajo del proceso de software

Actividades sombrilla

Marco de trabajo del proceso

Actividad del marco de trabajo #1

Tareas del trabajo

Productos del trabajo

Puntos de aseguramiento

Fundamentos del proyecto

Tareas del trabajo

Productos del trabajo

Puntos de aseguramiento

Fundamentos del proyecto

Accion de la ingenieria de software # 1.k

Accion de la ingenieria de software # 1.1

Conjunto

de tareas

.

Conjunto

de tareas

.

.

Actividad del marco de trabajo #n

Tareas del trabajo

Productos del trabajo

Puntos de aseguramiento

Fundamentos del proyecto

Tareas del trabajo

Productos del trabajo

Puntos de aseguramiento

Fundamentos del proyecto

Accion de la ingenieria de software # n.m

Accion de la ingenieria de software # n.1

Conjunto

de tareas

.

Conjunto

de tareas

.

.

Aplicacion del marco de trabajo en proyectosAplicacion del marco de trabajo en proyectos

Comunicación. Esta actividad del marco de trabajo implica una intensa colaboración y comunicación con los clientes; además, abarca la investigación de requisitos y otras actividadesrelacionadas.Planeación. Esta actividad establece un plan para el trabajo de la ingeniería del software. Describe las tareas técnicas que deben realizarse, los riesgos probables, los recursos que serán requeridos, los productos del trabajo que han de producirse y un programa de trabajo.Modelado. Abarca la creación de modelos quepermiten al desarrollador y al cliente entendermejor los requisitos del software y el diseño quelogrará satisfacerlos.

Construcción. Esta actividad combina la generación del codigo (ya sea manual o automatizado) y la realización de pruebasnecesarias para descubrir errores en el código.

Despliegue. El software (como una entidadcompleta o un incremento completado de manera parcial) se entrega al cliente, quiénevalua el producto recibido y proporcionainformación basada en su evaluación.

Recopilacion de requisitosRecopilacion de requisitos

Ocurre durante la actividad de comunicación, y

puede ser:

Hacer una lista de los clientes para el proyecto.

Invitar a todos los clientes a una reunión informal.

Pedir a cada cliente que haga una lista de

características y funciones requeridas.

Establecer un debate sobre los requisitos y elaborar

una lista final.

Priorizar los requisitos.

Advertir las áreas de incertidumbre.

Recopilacion de requisitos para proyecto complejoRecopilacion de requisitos para proyecto complejo

Hacer una lista de los clientes para el proyecto.

Entrevistar a c/u de los clientes, por separado, para

determinar de manera general sus deseos y necesidades

Elaborar una lista preliminar de las funciones y

características basadas en la información que ofrezcan los

clientes.

Hacer un programa de reuniones para recopilar los

requisitos.

Conducir las reuniones

Producir escenarios informales de los usuarios como

parte de cada reunión.

Refinar escenarios de los usuarios con base en el

intercambio de información con los clientes.

Elaborar una lista revisada de los requisitos de los

clientes

Utilizar técnicas de despliegue de funciones de calidad

para jerarquizar los requisitos.

Empaquetar los requisitos para que puedan entregarse

de manera incremental.

Observar las restricciones que serán puestas en el

sistema

Debatir métodos para validar el sistema.

Actividades sombrillaActividades sombrilla

Seguimiento y control del proyecto de software: permite que el equipo de software evalue el progreso comparandolo con el plan del proyecto y así tomar las acciones necesarias paramantener el programa.Gestión de riesgos: evalua los riesgos quepudiera afectar los resultados del proyecto o la calidad del producto.Aseguramiento de la calidad del software: define y conduce las actividades requeridas paraasegurar la calidad del software.Revisiones técnicas formales: evalua los productos del trabajo de la I.S., en un esfuerzoencaminado a descubrir y eliminar los erroresantes de que éstos se propaguen.

Medición: define y recolecta mediciones del proceso, el proyecto y el producto para ayudar al equipo a entregar software que satisfaga lasnecesidades del cliente.Gestión de la configuración del software: maneja los efectos del cambio a través del proceso del software.Gestión de la reutilización: define los criteriospara la reutilización de productos del trabajo (se incluyen componentes del software) y establecemecanismos para la creación de componentesreutilizables.Preparación y producción: abarca lasactividades requeridas para crear productos del trabajo como modelos, documentos, registros.

INTEGRACION DEL MODELO DE CAPACIDAD DE MADUREZINTEGRACION DEL MODELO DE CAPACIDAD DE MADUREZ

El instituto de Ingeniería del Software (SEI)

ha desarrollado un modelo completo de un

amplio proceso basado en un conjunto de

capacidades de software y de sistemas que

deben estar presentes conforme las

organizaciones alcanzan diferentes grados

de capacidad y madurez del proceso. Una

organización debe crear un modelo de

proceso que se ajuste a las directrices

establecidas por la integración del modelo

de capacidad de madurez (IMCM)

El modelo IMCM (integración del modelo de

capacidad de madurez), es el modelo más

utilizado en la industria del software.

“Mide la capacidad del

proceso para desarrollar

software con calidad”ad.(predictibilidad en costos, duración, y niveles de calidad previstos)

La IMCM representa un modelo completo de

proceso en dos formas diferentes:

1.- Como un modelo continuo

2.- Como un modelo discreto

5

4

3

2

1

0PP GR MA GC ACPP otros

PP Planeación del proyecto

GR Gestión de requisitos

MA Medición y análisis

GC Gestión de configuración

ACPP Aseguramiento de la calidad del producto y el proceso

Clasificación de acuerdo con niveles de capacidadClasificación de acuerdo con niveles de capacidad

Realizado

Administrado

Definido

Gestionado

Mejorado

Todas las metas específicas del área del proceso han sido

satisfechas. Las tareas de trabajo requeridas han sido realizadas

Todos los criterios del nivel han sido satisfechos. Todas las tareas

de trabajo y productos estan monitoreados, controlados y revisados

y son evaluados.

Los procesos están estabilizados y existe una gestión

cuántitativa. El área de proceso se controla y mejora mediante

mediciones y evaluacion cuantitativa.

La mejora de procesos es una actividad consistente y establecida

en la organización. Se adapta y mejora mediante el uso de medios

cuantitativos (estadísticos)

Nivel Características

Procesos organizativos, tanto técnicos como de gestión, están

claramente definidos.

incompletoEl área de proceso aún no se realiza o todavia no alcanza todas

las metas y objetivos definidos para el nivel 1 de capacidad

La IMCM define cada área del proceso en

función de “metas especificas” (ME)y de

las “prácticas especificas” (PE)

requeridas para alcanzar dichas metas.

Las ME establecen las características que

deben existir para que las actividades

implicadas por un área de proceso sean

efectivas.

Las PE convierten una meta en un conjunto

de actividades relacionadas con el proceso.

El modelo discreto de la IMCM define las

mismas áreas, metas y prácticas del

proceso que el modelo continuo. La

principal diferencia es que el modelo

discreto establece cinco niveles de

madurez, en vez de cinco niveles de

capacidad.

Para lograr un nivel de madurez se deben

conseguir metas y prácticas especificas

relacionadas con un conjunto de áreas del

proceso.

Relacion entre niveles de madurez y las areas del procesoRelacion entre niveles de madurez y las areas del proceso

Desarrollo de requisitosSolucion tecnicaIntegracion del productoVerificacionValidacionEnfoque del proceso organizacionalCapacitacion organizacionalGestion de riesgos

EstandarizacionDel proceso

definido

Gestion de requisitosPlaneacion del proyectoMonitoreo y control del proyectoGestion de acuerdos del proveedorMedicion y analisisAseguramiento de calidad del producto y procesoGestion de la configuracion

Gestionbasica delProyecto

Gestionado

Ejecutado

Eejecucion del proceso organizacionalGestion cuantitativa del proyecto

GestionCuantitativa

Gestionadode modo

cuantitativo

Innovacion organizacional y despliegueAnalisis causal y resolucion

Mejora continuadel

Proceso

De optimizacion

AREAS DEL PROCESOENFOQUENIVEL

PATRONES DEL PROCESOPATRONES DEL PROCESO

El proceso de software puede definirse como una

colección de patrones que definen un conjunto

de actividades, acciones, tareas de trabajo o

comportamientos relacionados que requiere el

desarrollo de un software para ordenador.

Un patrón de proceso ofrece una plantilla: un

método consistente para describir una

característica importante del proceso de

software. Mediante la combinación de patrones,

un equipo de software puede construir un

proceso que satisfaga las necesidades de un

proyecto.

Los patrones pueden definirse en cualquier

grado de abstracción. En algunos casos se puede

utilizar un patrón para describir un proceso

completo (prototipo).

En otras situaciones se utilizan los patrones para

describir una actividad del marco de trabajo

importante (como la plantación) o una tarea

dentro de una actividad del marco de trabajo

(por ejemplo, la estimación de un proyecto)

Plantilla para describir un patron de procesoPlantilla para describir un patron de proceso

Nombre del patrón. Al patrón se le asigna un nombre significativo(comunicación con el cliente).Propósito. Se describe con brevedadel objetivo del patrón. Por ejemplo, el objetivo de la comunicación con el cliente es “establecer una relación de colaboración con el cliente” en un esfuerzo encaminado a definir el alcance del proyecto y requisitos del negocio.

Tipo. Se especifica el tipo de patrón. (Ambler) sugiere tres tipos:Los patrones de tarea definen una acción de

la I.S., o una tarea de trabajo que es parte del proceso y relevante para una práctica exitosa de la I.S. (por ejemplo, la recopilación de requisitos es un patrón de tarea.Los patrones de escenario, incorpora multiples

patrones de tarea relevantes. Un ejemplo, es la comunicación.Los patrones de fase definen la secuencia de

actividades del marco de trabajo. Un ejemplo, modelo en espiral o de construcción de prototipos.

Contexto inicial. Se describen lascondiciones en las cuales se aplica el patrón.Problema. Se describe el problemaque debe resolver el patrón.Solución. Se describe la implentaciondel patrón.Contexto reultante. Se describen lascondiciones que habra una vez que el patrón haya sido implementado con éxito.

Patrones relacionados. Se proporciona una lista de todos los patrones de proceso directamenterelacionados con este, en forma jerárquica o de alguna otra forma.Usos conocidos/ejemplos. Se indican los ejemplos específicos en los cuales el patron es aplicable.

EVALUACION DEL PROCESOEVALUACION DEL PROCESO

La existencia de un proceso de software

no es garantía de que este será

entregado a tiempo, de que satisfará las

necesidades del cliente, o de que

mostrara las características técnicas que

conducirán a características de calidad a

largo plazo.

Los patrones de proceso deben ir

acompañados de una practica sólida de la

I.S.

Relacion entre proceso y métodos aplicado para evaluaciónRelacion entre proceso y métodos aplicado para evaluación

Evaluacion del

Proceso de SW

Mejoramiento del

Proceso de Sw

Determinacion

de la capacidad

Proceso del Sw

Identifica

modificaciones a

Identifica capacidades

y riesgos de

Conduce a Conduce a

motiva

Es examinado por

MODELOS DE PROCESO PERSONALES Y EN EQUIPOMODELOS DE PROCESO PERSONALES Y EN EQUIPO

El mejor proceso de software es el que

esta cerca de la gente que realizará el

trabajo. Si un modelo de proceso de

software ha sido desarrollado en un

ámbito corporativo, puede ser efectivo

sólo si es en gran medida adaptable para

satisfacer las necesidades del equipo del

proyecto, que es el que en realidad lleva

a cabo el trabajo de I.S.

En un escenario ideal, cada ingeniero de

software crearía un proceso que llene lo

mejor posible sus propias necesidades y

al mismo tiempo satisfaga las amplias

necesidades del equipo y la organización.

De modo alternativo, el equipo mismo

crearía su propio proceso, y al mismo

tiempo cubriría las necesidades mas

reducidas de los individuos y las

necesidades amplias de la organización.

PROCESO DE SOFTWARE PERSONAL (PSP)PROCESO DE SOFTWARE PERSONAL (PSP)

El modelo PSP define 5 actividades del

marco de trabajo:

Planeación. Esta actividad selecciona

requisitos y, con base en estos, desarrolla

el tamaño y la estimación de recursos.

Además, se estiman los defectos. Todas

las mediciones se registran en hojas de

trabajo o en plantillas.

Diseño de alto nivel. Se construyen

prototipos. Todos los elementos se

registran y rastrean.

Revisión del diseño de alto nivel. Los

métodos formales de verificación se aplican a

errores descubiertos en el diseño. Las

mediciones se mantienen para todas las

tareas importantes.

Desarrollo. El diseño al nivel de

componente se refina y revisa. Se genera,

revisa, compila y prueba el código. Las

mediciones de mantienen.

Análisis de resultados. Mediante las

mediciones y medidas recolectadas se

determina la efectividad del proceso.

PROCESO DE SOFTWARE EN EQUIPO (PSE)PROCESO DE SOFTWARE EN EQUIPO (PSE)

La meta del PSE es construir un equipo de

proyecto “autodirigido” que se organice

para producir software de alta calidad.

Humphrey define los siguientes objetivos:

Construir equipos autodirigidos que

planeen y tengan un seguimiento de su

trabajo, establezcan metas y posean sus

procesos y planes.

Mostrar a los jefes como preparar y

motivar a sus equipos y como ayudarlos a

sostener un alto desempeño.

Acelerar el mejoramiento del proceso

de software al realizar, con el

comportamiento normal y esperado.

Ofrecer una guía de mejoramiento a

organizaciones de alta madurez.

Facilitar la enseñanza de habilidades de

equipo de calidad.

El PSE define las siguientes actividadesdel marco de trabajo:

LanzamientoDiseño de alto nivelImplementaciónIntegración y pruebaAnálisis de resultados

El PSE reconoce que los mejores equipos

de software son autodirigidos. Los

miembros del equipo plantean los

objetivos del proyecto, adaptan el

proceso para cubrir sus necesidades,

controlan el programa y la medición y el

análisis de las medidas recolectadas;

además, trabajan de manera continua

para mejorar el enfoque del equipo

respecto de la I.S.

Un profesional del software creativo debe

sentir tanta satisfacción del proceso como

del producto terminado.

El trabajo que realiza la gente de software

cambiara en los años que siguen. La

dualidad del producto y el proceso es un

elemento importante para mantener a la

gente creativa comprometida mientras

finaliza la transición desde la programación

hasta la Ingeniería de Software.

Si el proceso es debil, el producto final sufrira las consecuenciasSi el proceso es debil, el producto final sufrira las consecuencias