Procesos para la
▪
Procesos para la Ingeniería de
Software
Agenda
I. Introducción a los procesos de Ingeniería de Software
II. Estructura del proceso de software
◦ Actividades sombrilla
▪ Seguimiento y Control del proyecto de software.
▪ Administración del riesgo.
▪ Administración de la reutilización.
▪ Preparación y producción del producto del trabajo.
▪ Administración de la configuración del software.
▪ Medición.
▪ Revisiones técnicas.
Introducción
Proceso.
Un proceso define: quién hace qué, cuándo y cómo para alcanzar el objetivo. (Jacobson).
Conjunto de actividades, acciones y tareas que se ejecutan cuando va a crearse un producto del trabajo.
Introducción
Actividad. Busca lograr un objetivo amplio (comunicación entre
participantes) y se desarrollar sin importar el dominio de la aplicación, tamaño del proyecto, complejidad del esfuerzo.
Acción. Conjunto de tareas que producen un producto importante de
trabajo (modelo del diseño de la arquitectura).
Tarea. Se centra en un objetivo pequeño pero bien definido (prueba
Introducción
Software. Conjunto de programas,
documentos asociados y la
configuración de datos que se
necesitan para hacer que estos
programas funcionen de manera
correcta (Sommerville).
Introducción
▪
El proceso que se lleva a cabo para construir,
entregar y mantener un producto de software,
desde la concepción de una idea hasta la
entrega, y el retiro del sistema es llamado
Proceso de Producción de Software
En IS el proceso no es una prescripción rígida de cómo
elaborar software, es un enfoque adaptable.
Introducción
▪
El propósito del Desarrollo y
Mantenimiento de Software es la
realización sistemática de las
actividades de análisis, diseño,
construcción, integración y pruebas de
productos de software nuevos o
modificados cumpliendo con los
requerimientos especificados.
Introducción
▪
Objetivo de los procesos de producción de software:
Satisfacer las expectativas del cliente entregando
productos de calidad en tiempo y con un presupuesto
determinado.
Realizando productos rentables, de confianza,
previsibles y eficientes.
Introducción
▪
Beneficios de un proceso de producción de software bien
Introducción
▪
Definiendo un modelo de proceso de producción de software
obtenemos los beneficios de los procesos estandarizados, sin
embargo recordemos que:
▪
El proceso de producción de software es en gran medida una
actividad intelectual difícil de automatizar.
▪
El software es caracterizado por ser altamente inestable: los
requerimientos cambian continuamente y como consecuencia,
los productos son evolucionables.
Estructura del proceso
de software
Actividades Sombrilla
C OMUNICACIÓN PLAN EA CIÓ N MODELADO C ON STRUCCIÓN DE SPLI EGU E -Seguimiento y control -Administración del riesgo-Administración de la reutilización
1.1 Conceptos básicos
▪
Proyecto:
Actividades Sombrilla en
el proceso de
Estructura del proceso de software
▪
Actividades sombrilla:
▪
Se aplican a todo lo largo del proyecto de software.
▪
Ayudan al equipo que lo lleva a cabo a administrar y controlar el
avance, la calidad, el cambio y el riesgo.
Estructura del proceso de software
▪
Actividades sombrilla:
1.
Preparación y producción del producto del trabajo.
2.
Seguimiento y Control del proyecto de software.
3.
Administración del riesgo.
4.
Administración de la reutilización.
5.
Administración de la configuración del software.
6.
Medición.
7.
Revisiones técnicas.
Estructura del proceso de software
▪
Actividades sombrilla:
Preparación y producción del producto del trabajo.
Agrupa las actividades requeridas para crear los productos
necesarios del trabajo tales como: modelos, documentos,
registros, formatos, y listas.
Estructura del proceso de software
▪
Actividades sombrilla:
Estructura del proceso de software
“El seguimiento es el proceso sistemático en virtud
del cual se recopila y se analiza información con el
objeto de comparar los avances logrados en función
de los planes formulados
y corroborar el cumplimento
Estructura del proceso de software
“Ayuda a identificar tendencias y patrones, a adaptar
las estrategias y a fundamentar las decisiones
Estructura del proceso de software
▪
¿Qué se requiere para llevar a cabo un seguimiento del avance de
equipo de desarrollo de software?
Una calendarización adecuada, que debe considerar los siguientes puntos:
i. Todas las tareas deben aparecer en la red.
ii. El esfuerzo y la calendarización deben ser asignados de manera inteligente a cada tarea.
iii. Las interdependencias entre tareas deben ser indicadas de manera adecuada.
Estructura del proceso de software
▪
¿Qué se requiere para llevar a cabo un seguimiento del avance de
equipo de desarrollo de software?
Una calendarización adecuada, que debe considerar los siguientes puntos:
i. Deben asignarse los recursos para el trabajo que se va a realizar.
ii. Deben establecerse hitos espaciados de modo que pueda darse seguimiento al progreso. Hitos: Puntos finales de una actividad del proceso de software.
iii. Debe permitir identificar las tareas cruciales dentro de la red para monitorear su progreso y ser capaces de reconocer demoras
Estructura del proceso de software
▪
El seguimiento puede lograrse en varias formas diferentes:
▪Realizar reuniones periódicas del estado del proyecto, en las que
cada miembro del equipo reporte avances y problemas.
▪Determinar si los hitos formales del proyecto se lograron en la fecha prevista.
Estructura del proceso de software
▪
El seguimiento puede lograrse en varias formas diferentes:
▪Reunirse informalmente con los profesionales para obtener su
valoración subjetiva del avance a la fecha y los problemas en el horizonte
▪Usar análisis de valor ganado para valorar cuantitativamente el avance
Estructura del proceso de software
▪
Actividades sombrilla:
Estructura del proceso de software
¿Que son los riesgos?
Se puede concebir un riesgo como la probabilidad de que una circunstancia adversa ocurra.
Los riesgos son una amenaza para el proyecto, para el software que se está desarrollando y para la organización.
1.1 Conceptos básicos
▪
Gestión de riesgos. Una tarea importante del gestor de
proyectos es anticipar los riesgos.
Riesgos del Proyecto • Calendarización • Recursos Riesgos del Producto • Calidad • Rendimiento del producto Riesgos del negocio • Organización que desarrolla
Estructura del proceso de software
Categorías de riesgos
1. Riesgos del proyecto. Éstos afectan la calendarización o los recursos del proyecto. Un ejemplo podría ser la pérdida de un diseñador experimentado. 2. Riesgos del producto. Éstos afectan a la calidad o al rendimiento del software que se está desarrollando. Un ejemplo podría ser que el rendimiento en un
componente que se ha comprado sea menor que el esperado.
3. Riesgos del negocio. Estos afectan a la organización que desarrolla o
suministra el software. Por ejemplo, que un competidor introduzca un nuevo producto es un riesgo de negocio.
Estructura del proceso de software
Planes de contingencia.
1. Identificación de riesgos. Identificar los posibles riesgos para el proyecto, el producto y los negocios.
2. Análisis de riesgos. Valorar las probabilidades y consecuencias de estos riesgos.
3. Planificación de riesgos. Crear planes para abordar los riesgos, ya sea para evitarlos o minimizar sus efectos en el proyecto.
4. Supervisión de riesgos. Valorar los riesgos de forma constante y revisar los planes para la mitigación de riesgos tan pronto como la
Estructura del proceso de software
Técnicas de manejo de riesgo
▪ Consiste en definir la mejor manerade tratar el riesgo identificados y
analizados en las etapas anteriores y establecer acciones factibles y
Estructura del proceso de software
▪
Actividades sombrilla:
Estructura del proceso de software
▪
Actividades sombrilla:
Administración de la reutilización.
Define criterios para volver a usar el producto (o
componentes) y establece mecanismos para obtener
componentes reutilizables.
Estructura del proceso de software
▪
Beneficios de la reutilización:
o
Incremento de la confiabilidad
o
Reducción del riesgo del proceso
o
Uso efectivo de especialistas
o
Cumplimiento de estándares
o
Desarrollo acelerado
Estructura del proceso de software
▪
Actividades sombrilla:
Estructura del proceso de software
▪
El arte de coordinar el desarrollo de software para
minimizar [...] la confusión se llama administración de la
configuración, que es el arte de identificar, organizar y
controlar las modificaciones que se hacen al software que
construirá un equipo de programación. La meta es
maximizar la productividad al minimizar los errores.
Estructura del proceso de software
▪
¿Cuándo surge la confusión?
▪Los cambios no se analizan antes de que se realicen.
▪Los cambios no se registran antes de que se implanten.
▪Los cambios no se reportan a quienes tienen necesidad de conocerlos
▪ Los cambios no se controlan en forma que mejore la calidad y se reduzca el error.
Estructura del proceso de software
▪
¿Qué es la configuración del software?
▪Son los ítems (elementos) que comprenden toda la información producida como parte del proceso de software.
▪Un Item de Configuración del Software (ICS) es todo o parte de un
producto de trabajo (por ejemplo, un documento, toda una suite de casos de prueba o un componente de programa).
Estructura del proceso de software
▪
La administración de la configuración del software (ACS) es
una actividad sombrilla.
1)
Identificar el cambio
2)
Controlar el cambio
3)
Garantizar que el cambio se implementó de manera
adecuada y
Estructura del proceso de software
“Es muy fácil que un torrente de cambios
descontrolados convierta en caos un proyecto de
software bien estructurado”
Estructura del proceso de software
▪
Actividades sombrilla:
Estructura del proceso de software
Estimación
Calend ariza-ción Análisis de riesgos Planificaci ón de gestión de la calidad Planificaci ón de gestión del cambioEstructura del proceso de software
Estructura del proceso de software
▪
¿Cuánto esfuerzo se requiere
para completar una actividad?
▪
¿Cuánto tiempo de calendario se
necesita para completar una
actividad?
Estructura del proceso de software
▪
ESTIMACIÓN
Intento por determinar cuánto dinero, esfuerzo,
recursos y tiempo tomará construir un sistema o
producto específico basado en software
Estructura del proceso de software
▪
Algunas estimaciones se realizan antes de la
planeación detallada:
▪ Cálculo del presupuesto del proyecto
▪ Establecimiento de costo de software para un cliente
Una vez iniciado el proyecto, los gestores deben actualizar
las estimaciones de tiempo y costo.
Estructura del proceso de software
▪
Actividades sombrilla:
Estructura del proceso de software
▪Las revisiones del software son un “filtro” para el proceso del software.
▪Se aplican en varios puntos durante la ingeniería de software y
sirven para descubrir errores y defectos a fin de poder eliminarlos.
▪Errar es humano.
▪Algunas personas son buenas para detectar errores propios, sin embargo algunos pasan desapercibidos con más facilidad para
Estructura del proceso de software
▪Una revisión es una forma de utilizar la diversidad de un grupo para:
1. Resaltar las mejoras necesarias en el producto que elaboró una sola persona o equipo;
2. Confirme aquellas partes de un producto en las que no se desea o no se necesita hacer una mejora.
Estructura del proceso de software
▪¿Quién hace la revisión?
Los ingenieros de software realizan una revisión técnica, también llamada revisión de pares, con sus colegas.
Estructura del proceso de software
▪
Revisión Técnica Formal (RTF)
▪
¿Qué es?
Es una actividad del control de calidad del software
realizada por ingenieros de software (y otras personas).
Estructura del proceso de software
▪
Revisión Técnica Formal (RTF)
▪
¿Objetivos?
1. Descubrir los errores en funcionamiento, lógica o implementación de cualquier representación del software
2. Verificar que el software que se revisa cumple sus requerimientos
3. Garantizar que el software está representado de acuerdo con estándares predefinidos
Estructura del proceso de software
▪
Actividades sombrilla:
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
Calidad
(Del lat. qualĭtas, -ātis, y este calco del gr. ποιότης).
1. f. Propiedad o conjunto de propiedades inherentes a algo, que permiten juzgar su valor.
2. f. Buena calidad, superioridad o excelencia.
3. f. Adecuación de un producto o servicio a las características especificadas. 4. f. Carácter, genio, índole.
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
Calidad en IS
“Concordancia con los requisitos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados, y con las características implícitas que se espera de todo software desarrollado profesionalmente”. [R.S.Pressman]
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
Calidad en IS
“Grado con el que un sistema, componente o proceso
cumple los requisitos especificados y las necesidades
del cliente o
usuario” [IEEE 610-1990]
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
Calidad en IS
“Conjunto de propiedades o características de un
producto o servicio que le confieren aptitud para
satisfacer unas necesidades expresadas o
implícitas”.
[ISO 8402]
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
En resumen. Calidad en IS
Consiste en las características del producto que
satisfacen las necesidades de los clientes y les
proporciona por tanto satisfacción con el producto.
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
Algunos desarrolladores de software todavía creen que la calidad del software es algo por lo que hay que empezar a preocuparse una vez generado el código.
Estructura del proceso de software
▪
¿Cómo se determina que un sistema tiene mala
calidad?
o Sólo se requiere de tres a cuatro defectos por cada 1, 000 líneas de código para que un programa tenga mal desempeño.
o La mayoría de los programadores cometen un error en cada 10 líneas de código que escriben.
Estructura del proceso de software
▪
Costos de la calidad
▪El costo promedio por corregir un defecto durante la codificación es aproximadamente de US$977 por error.
▪El promedio del costo por corregir el mismo error si se descubre durante las pruebas del sistema es de US$7, 136.
▪Según Cigital: una aplicación grande contiene 200 errores
Estructura del proceso de software
¿Cuáles son los pasos para lograr software de alta
calidad?
o
Usar procesos y prácticas probados de la ingeniería de
software
o
Administrar bien el proyecto
o
Realizar un control de calidad exhaustivo
o
Contar con infraestructura de aseguramiento de la
Estructura del proceso de software
▪Aseguramiento de la calidad del software
▪ Es una actividad sombrilla. Incluye:
▪ 1) Un proceso de Aseguramiento de la calidad del software (ACS),
▪ 2) Tareas específicas de aseguramiento y control de la calidad (incluidas revisiones técnicas y una estrategia de pruebas relacionadas entre sí)
▪ 3) Prácticas eficaces de ingeniería de software (métodos y herramientas)
▪ 4) Control de todos los productos del trabajo de software y de los cambios que sufren
▪ 5) Un procedimiento para garantizar el cumplimiento de los estándares del desarrollo de software (cuando sea aplicable)
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
▪Elementos:
▪Estándares.
▪Revisiones y auditorías
▪Pruebas.
▪Colección y análisis de los errores.
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
▪Elementos:
▪Educación/Capacitación.
▪Administración de los proveedores.
▪Administración de la seguridad. ▪Seguridad.
Estructura del proceso de software
▪Aseguramiento de la calidad del software
▪Tareas:
▪ Dos entidades diferentes ayudan a asegurar la calidad: los ingenieros de
software que hacen el trabajo técnico y un grupo de ACS.
▪ El grupo ACS tiene la responsabilidad de planear, supervisar, registrar, analizar y
hacer reportes acerca de la calidad.
▪ Los ingenieros de software abordan la calidad (y ejecutan actividades para
controlarla), aplicando métodos y medidas técnicas sólidos, realizando revisiones técnicas y haciendo pruebas de software bien planeadas.
Estructura del proceso de software
▪Aseguramiento de la calidad del software. El grupo ACS:
1. Prepara el plan de ACS para un proyecto.
2. Participa en el desarrollo de la descripción del software del proyecto.
3. Revisa las actividades de la ingeniería de software a fin de verificar el cumplimiento mediante el proceso definido para el software.
4. Audita los productos del trabajo de software designados para verificar que se cumpla con aquellos definidos como parte del proceso de software.
5. Registra toda falta de cumplimiento y la reporta a la alta dirección.
Estructura del proceso de software
▪
Aseguramiento de la calidad del software
▪
El plan ACS incluye:
▪Las evaluaciones que se van a realizar ▪Las auditorías y revisiones por efectuar
▪Los estándares aplicables al proyecto
▪Los procedimientos para reportar y dar seguimiento a los errores
▪Los productos del trabajo que genera el grupo de ACS y la retroalimentación que se dará al equipo del software.
Estructura del proceso de software
¿Cuál es el producto final?
▪
Software que satisface las necesidades del consumidor, con
un desempeño apropiado y confiable, y que agrega valor
Actividad 1.
Elabora una infografía con los conceptos estudiados
en clase -Actividades Sombrilla del Proceso de
Bibliografía
Pressman, R.S., Ingeniería del Software. Un enfoque práctico, quinta edición, 2002, España. Sommerville I., Ingeniería de Software, Addison-Wesley, 6ª. Edición, 2002, México.
McConnell Steve, "Desarrollo y Gestión de proyectos informáticos", Ed. McGraw-Hill, 1997, España. Anaya Julio Juan. Logística integral: la gestión operativa de la empresa, 3ª edición. Madrid 2007. ESIC