INGENIERIA DE SOFTWARE Un enfoque practico Roger S. Pressman
PROCESO DEL SOFTWARE
Se define como una estructura para las actividades, acciones y tareas que se requieren a fin de construir software de alta calidad.
NOTA:
No es lo mismo proceso de software que ingeniería de software. Un proceso define el enfoque adoptado a doptado mientras se hace ingeniería sobre el software.
UN MODELO GENERAL DE PROCESO
Flujo del proceso Describe la manera en que están organizadas las actividades estructurales y las acciones y tareas que ocurren dentro de cada una con respecto a la secuencia y el tiempo.
Flujo de proceso lineal. Ejecuta cada una de las actividades estructurales en secuencia.
Flujo de proceso Iterativo. Repite una o más actividades antes de pasar a la siguiente
Flujo de proceso evolutivo. Realiza las actividades en forma circular. A través de las cinco ci nco actividades, cada circuito lleva a una versión más completa del software.
Flujo de proceso paralelo. Ejecuta una o más actividades en paralelo con otras.
Evaluación y mejoras del proceso
La existencia de un proceso de software no es garantía de que el software se entregue a tiempo, que sati tissfaga las necesidades de los consumidores, o que tenga las características técnicas que cond co nduc ucir irán án a ca cara ract cter erís ísti tica cass de ca calilida dad d a la larg rgo o pl plaz azo. o. Además el proceso en si puede evaluarse para garantizar que cumple con ciertos criterios de proceso básicos que se haya demostrado que son esenciales para el éxito de la ingeniería de software. Alg lgu unos enfoques para la evaluación y mejo jorra de un proceso del software:
- Método de evaluación evaluación del estándar estándar CMMI CMMI para para el proceso proceso de mejoras (SCAMPI) - Evalu Evaluación ación basada en en CMM para la la mejora mejora del proceso interno (CBA IPI) - SPICE - ISO ISO900 9001:2 1:2000 000 par para a softw software are
MODELOS DEL PROCESO PRESCRIPTIVO
Fueron propuestos originalmente para poner orden en el caos del desarrollo de software. Se les llama así porque prescriben un conjunto de elementos del proceso: actividades estructurales, acciones de ingeniería de software, tareas, productos de trabajo, aseguramiento de la calidad y mecanismos de control del cambio para cada proyecto.
Modelo de la cascada
El modelo de cascada, a veces llamando ciclo de vida clásico, sugiere un enfoque sistemático y secuencial para el desarrollo de software que comienza con la especificación de los requerimientos por parte del cliente y avanza a través de la planeación, modelado, construcción y desarrollo, para concluir con el apoyo del software terminado.
Modelos de proceso incremental
El modelo incremental combina elementos de los flujos del proceso lineal y paralelo. Aplica secuencias lineales en forma escalonada a medida que avanza el calendario de actividades. Cada secuencia lineal produce “incrementos” de software susceptibles a entregarse de manera parecida a los incrementos producidos en un flujo de proceso evolutivo.
Se utiliza en situaciones en las que los requerimientos iniciales de software están razonablemente bien definidos, pero el alcance general del esfuerzo de desarrollo imposibilita un proceso lineal. Además, tal vez haya la necesidad imperiosa de dar rápidamente cierta funcionalidad limitada de software a los usuarios y aumentarla en las entregas posteriores.
- En cada cada increm incremento ento se entreg entrega a un producto producto que que ya opera - Los primero primeross incremen incrementos tos son son versione versioness desnuda desnudass (básicas) (básicas) - Es útil en particul particular ar cuando cuando no no se dispone dispone de personal personal para la implementación completa del proyecto en el plazo establecido por el negocio.
Modelos de proceso evolutivo
Los modelos evolutivos son iterativos. Se caracterizan por la manera en que permiten desarrollar versiones cada vez más completas del software. Se utiliza cuando los requerimientos del negocio y del producto cambian conforme avanza el desarrollo, lo que hace que no sea realista realizar un trayectoria rectilínea hacia el producto final.
Hacer prototipos. Se utiliza cuando se tienen un conjunto de objetivos generales para el software, pero no se han identificado los requerimientos detallados para las funciones y características.
El modelo espiral. Propuesto por Barry Boehm, el modelo espiral es un modelo evolutivo del proceso de software y se acopla con la naturaleza iterativa de hacer prototipos con los aspectos controlados y sistémicos del modelo de cascada.
Modelos concurrentes En ocasiones llamado “ingeniería concurrente”, es un modelo de desarrollo de software que permite que un equipo de software represente elementos iterativos y concurrentes de cualquiera de los modelos de proceso descritos anteriormente.
MODELOS DE PROCESO ESPECIALIZADO
Tienen muchas características de uno o más de los modelos tradicionales, sin embargo, estos modelos tienden a aplicarse cuando se elige un enfoque de ingeniería de software especializado o definido muy específicamente.
Desarrollo basado en componentes. Se trata de un desarrollo basado en componentes comerciales de software generalmente desarrollados por vendedores que los ofrecen como productos y que brindan una funcionalidad bien definida y permite que se integren al software que se va a construir.
Incorpora muchas de las características del modelo espiral. Es de naturaleza evolutiva y demanda un enfoque iterativo para la creación de software.
Construye aplicaciones a partir de fragmentos de software prefabricados.
El modelo de métodos formales
Agrupa actividades que llevan a la especificación matemática del software de cómputo. Permiten especificar, desarrollar y verificar un sistema si stema basado en computadora por medio del empleo de una notación matemática rigurosa. Aunque este modelo promete un software libre de defectos, no es muy seguido y tiene ti ene algunos inconvenientes: - Se consume consume mucho tiempo tiempo de de desarrollo desarrollo y es caro caro
- Se requiere requiere de mucha capacitac capacitación ión ya que pocos pocos desarrolladores tiene la formación necesaria - Incl Incluyen uyen complejid complejidad ad técnica técnica para el cliente
Desarrollo de software orientado a aspectos Conocido también como programación orientada a aspectos (POA), es un paradigma de ingeniería de software relativamente nuevo que proporciona un proceso y enfoque metodológico para definir, especificar, diseñar y construir aspectos: “mecanismos más allá de subrutinas y herencia para localizar la expresión de una preocupación global”.
EL PROCESO UNIFICADO
Es un intento por obtener los mejores rasgos y características de los modelos tradicionales del proceso de software, pero en forma que implemente muchos de los mejores principios de desarrollo ágil de software.
Fases del proceso unificado
Fase de concepción. Agrupa actividades tanto de comunicación con el cliente como de planeación. Fase de elaboración. Incluye actividades de comunicación y modelado del modelo general del proceso Fase de construcción. Es idéntica a la actividad de construcción definida para el proceso general del software. Fase de transición. Incluye las últimas etapas de la actividad general de construcción y la primera parte de la actividad de despliegue general. Fase de producción. Se vigila el uso que se le da ala software
Fases del proceso unificado
MODELOS DEL PROCESO PEROSONAL Y DEL EQUIPO
Se trata de la creación de un modelo que cubra las necesidades más estrechas de los individuos y las más generales de la organización.
Proceso personal del software
Representa un enfoque disciplinado basado en la medición, enfatiza la necesidad de detectar pronto los errores. Define cinco actividades estructurales:
- Planeación - Di Dise seño ño de alt alto o niv nivel el - Rev Revisi isión ón de dise diseño ño de alto alto niv nivel el - Desar arrrollo - Post mor orttem
Proceso del equipo de software
El objetivo es construir un equipo “autodirigido “ autodirigido”” para el proyecto, que se organice para producir software de alta calidad. Tiene los siguientes objetivos: - For Formar mar gru grupos pos aut autodi odirig rigido idoss
- Mostra Mostrarr a los los gerente gerentess como dirigi dirigirr y motiva motivarr a sus equipos - Acel Acelerar erar la mayorí mayoría a del del proceso proceso del softw software are - Brinda Brindarr a las organi organizacio zaciones nes muy madur maduras as una una guía para la mejora - Facili Facilitar tar la la enseñanza enseñanza univer universitar sitaria ia de de aptitudes aptitudes de equipo con grado industrial
GRACIAS