Modelos de Proceso Software
Modelos de Proceso Software
Modelos de Proceso Software
5. Bibliografía ......................................................................................................24
2
Modelos del Proceso de Software
1. Unidad 1: La ingeniería de
Software y los modelos del
proceso
Tema 2: Modelos del Proceso de Software
Objetivo:
Comprender las actividades de ingeniería que componen el proceso del software y sus
modelos de proceso.
Introducción:
El desarrollo de software comprende actividades debidamente establecidas por una
metodología propia de su desarrollo, dichas actividades forman parte del llamado
proceso de software, el cual está compuesto por algunos modelos genéricos con el fin
de simplificar los procesos orientados a la producción de software de calidad.
Modelo de la cascada
A continuación, se detallan algunas definiciones para el modelo en mención:
Por su parte Sommerville (2011) destaca al modelo en cascada como “un ejemplo de
un proceso dirigido por un plan; en principio, usted debe planear y programar todas las
actividades del proceso, antes de comenzar a trabajar con ellas” (pág. 30),
puntualizando de la siguiente manera las etapas de este modelo:
Siendo así, Pressman asegura: “El modelo incremental aplica secuencias lineales en
forma escalonada a medida que avanza el calendario de actividades. Cada secuencia
lineal produce “incrementos” de software susceptibles de entregarse de manera
parecida a los incrementos producidos en un flujo de proceso evolutivo” (Pressman,
2010, pág. 35).
Hacer prototipos
“Un prototipo es una versión inicial de un sistema de software que se usa para
demostrar conceptos, tratar opciones de diseño y encontrar más sobre el problema y
sus posibles soluciones” (Sommerville, 2011, pág. 45).
identifica cualesquiera requerimientos que conozca y detecta las áreas en las que es
imprescindible una mayor definición. Se planea rápidamente una iteración para
hacer el prototipo, y se lleva a cabo el modelado (en forma de un “diseño rápido”).
Éste se centra en la representación de aquellos aspectos del software que serán
visibles para los usuarios finales (por ejemplo, disposición de la interfaz humana o
formatos de la pantalla de salida). (Pressman, 2010, pág. 37)
1. Los participantes ven lo que parece ser una versión funcional del software, sin
darse cuenta de que el prototipo se obtuvo de manera caprichosa; no perciben que
en la prisa por hacer que funcionara, usted no consideró la calidad general del
software o la facilidad de darle mantenimiento a largo plazo. Cuando se les informa
© Universidad Estatal de Milagro – UNEMI
que el producto debe rehacerse a fin de obtener altos niveles de calidad, los
participantes gritan que es usted un tonto y piden “unos cuantos arreglos” para
hacer del prototipo un producto funcional. Con demasiada frecuencia, el gerente de
desarrollo del software cede.
2. Como ingeniero de software, es frecuente que llegue a compromisos respecto de
la implementación a fin de hacer que el prototipo funcione rápido. Quizá utilice un
sistema operativo inapropiado, o un lenguaje de programación tan sólo porque
cuenta con él y lo conoce; tal vez implementó un algoritmo ineficiente sólo para
demostrar capacidad. Después de un tiempo, quizá se sienta cómodo con esas
elecciones y olvide todas las razones por las que eran inadecuadas. La elección de
algo menos que lo ideal ahora ha pasado a formar parte del sistema. (Pressman,
2010, pág. 38)
El modelo espiral
Según Boehm el modelo espiral es un modelo evolutivo del proceso del software y se
acopla con la naturaleza iterativa de hacer prototipos con los aspectos controlados y
sistémicos del modelo de cascada. Tiene el potencial para hacer un desarrollo rápido
de versiones cada vez más completas. Boehm describe el modelo del modo siguiente:
“Las actividades de este modelo se conforman en una espiral, cada bucle representa
un conjunto de actividades (…) no están fijadas a priori, sino que las siguientes se
eligen en función del análisis de riesgos, comenzando por el bucle anterior”.
(Laboratorio Nacional de Calidad del Software, 2009, pág. 29)
Al ser un modelo de ciclo de vida orientado a la gestión de riesgos se dice que uno
de los aspectos fundamentales de su éxito radica en que el equipo que lo aplique
tenga la necesaria experiencia y habilidad para detectar y catalogar correctamente
riesgos. (Laboratorio Nacional de Calidad del Software, 2009, pág. 29)
2. Valoración y reducción del riesgo. En cada uno de los riesgos identificados del
proyecto, se realiza un análisis minucioso. Se dan acciones para reducir el riesgo. Por
ejemplo, si existe un riesgo de que los requerimientos sean inadecuados, puede
desarrollarse un sistema prototipo.
3. Desarrollo y validación. Después de una evaluación del riesgo, se elige un modelo
de desarrollo para el sistema. Por ejemplo, la creación de prototipos desechables sería
el mejor enfoque de desarrollo, si predominan los riesgos en la interfaz del usuario. Si
la principal consideración son los riesgos de seguridad, el desarrollo con base en
transformaciones formales sería el proceso más adecuado, entre otros. Si el principal
riesgo identificado es la integración de subsistemas, el modelo en cascada sería el
mejor modelo de desarrollo a utilizar.
4. Planeación. El proyecto se revisa y se toma una decisión sobre si hay que continuar
con otro ciclo de la espiral. Si se opta por continuar, se trazan los planes para la
siguiente fase del proyecto.
Modelos concurrentes
“El modelo de desarrollo concurrente, en ocasiones llamado ingeniería concurrente,
permite que un equipo de software represente elementos iterativos y concurrentes de
cualquiera de los modelos de proceso” (Pressman, 2010, pág. 40).
“El modelado concurrente define una serie de eventos que desencadenan transiciones
de un estado a otro para cada una de las actividades, acciones o tareas de la ingeniería
de software” (Pressman, 2010, pág. 42).
© Universidad Estatal de Milagro – UNEMI
3. Se diseña una arquitectura del software para que reciba los componentes.
4. Se integran los componentes en la arquitectura.
5. Se efectúan pruebas exhaustivas para asegurar la funcionalidad apropiada.
Según Rojas & García (2004), las aactividades que involucra el modelo del ciclo de vida
para DSBC (figura 6), son las siguientes:
Análisis de Requerimientos: En esta etapa del ciclo de vida los procesos y las
necesidades del negocio se descubren y se expresan en los casos de uso.
Selección, construcción, análisis y evaluación de la Arquitectura de Software: “La
arquitectura del software define un sistema en términos de componentes
computacionales y la interacción entre ellos”.
Identificación y arreglo para requisitos particulares del Componente: En esta
© Universidad Estatal de Milagro – UNEMI
La figura 7 ilustra la forma como los aspectos evolucionan a través de todo el ciclo de
vida de desarrollo de software. Los aspectos se clasifican de la siguiente forma: (1)
aspectos tempranos, los cuales se especifican desde los requisitos hasta la
arquitectura; (2) aspectos intermedios, los cuales se especifican en estructuras
aspectuales al nivel del diseño; (3) aspectos finales, los cuales se especifican en
lenguajes de programación especializados. (Tabares, Alferez Salinas, & Alferéz Salinas,
© Universidad Estatal de Milagro – UNEMI
2008)
“El proceso unificado (PU) y el UML se usan mucho en proyectos de toda clase
orientados a objetos. El modelo iterativo e incremental propuesto por el PU puede y
debe adaptarse para que satisfaga necesidades específicas del proyecto” (Pressman,
2010, pág. 46).
Etapa de ingeniería
Esta etapa agrupa las fases de concepción y de elaboración, lo que básicamente le da
por objetivos la conceptualización del sistema y el diseño inicial de la solución del
problema.
Fase de concepción
Esta fase tiene como propósito definir y acordar el alcance del proyecto con los
patrocinadores, identificar los riesgos asociados al proyecto, proponer una visión muy
general de la arquitectura de software y producir el plan de las fases y el de
iteraciones.
Fase de elaboración
© Universidad Estatal de Milagro – UNEMI
Los casos de uso seleccionados para desarrollarse en esta fase permiten definir la
arquitectura del sistema, se realiza la especificación de los casos de uso seleccionados
y el primer análisis del dominio del problema, se diseña la solución preliminar del
problema y comienza la ejecución del plan de manejo de riesgos, según las prioridades
definidas en él.
Etapa de producción
En esta etapa se realiza un proceso de refinamiento de las estimaciones de tiempos y
recursos para las fases de construcción y transición, se define un plan de
mantenimiento para los productos entregados en la etapa de ingeniería, se
Fase de construcción
El propósito de esta fase es completar la funcionalidad del sistema, para ello se deben
clarificar los requerimientos pendientes, administrar el cambio de los artefactos
construidos, ejecutar el plan de administración de recursos y mejoras en el proceso de
desarrollo para el proyecto.
Fase de transición
El propósito de esta fase es asegurar que el software esté disponible para los usuarios
finales, ajustar los erro-res y defectos encontrados, capacitara los usuarios y proveer el
soporte técnico necesario. Se debe verificar que el producto cumpla con las
especificaciones entregadas por las personas involucradas en el proyecto al inicio del
mismo.
© Universidad Estatal de Milagro – UNEMI
“El proceso personal del software (PPS) pone el énfasis en la medición personal tanto
del producto del trabajo que se genera como de su calidad. Además, el PPS
responsabiliza al profesional acerca de la planeación del proyecto” (Pressman, 2010,
pág. 48).
Vargas & Soto Durán (2010) afirman: “Este modelo está enfocado al desarrollo
profesional del ingeniero, fomentando una adecuada administración de calidad de los
proyectos de desarrollo, reducción de defectos del producto, estimación y planeación
del trabajo”.
Según Fernández (2009), el PSP puede aplicar a muchas partes del desarrollo de
software, incluyendo:
Desarrollo de programas.
Definición de requisitos.
Estructura de la documentación.
Pruebas del sistema.
Mantenimiento de los sistemas.
Desarrollo de sistemas de software grandes.
Pressman declara que el modelo del PPS define cinco actividades estructurales:
Planeación. Esta actividad aísla los requerimientos y desarrolla las estimaciones tanto
del tamaño como de los recursos. Además, realiza la estimación de los defectos (el
número de defectos proyectados para el trabajo). Todas las mediciones se registran en
hojas de trabajo o plantillas. Por último, se identifican las tareas de desarrollo y se crea
un programa para el proyecto.
Diseño de alto nivel. Se desarrollan las especificaciones externas para cada
componente que se va a construir y se crea el diseño de componentes. Si hay
incertidumbre, se elaboran prototipos. Se registran todos los aspectos relevantes y se
les da seguimiento.
Revisión del diseño de alto nivel. Se aplican métodos de verificación formal para
descubrir errores en el diseño. Se mantienen las mediciones para todas las tareas y
resultados del trabajo importantes.
Desarrollo. Se mejora y revisa el diseño del componente. El código se genera, revisa,
compila y prueba. Las mediciones se mantienen para todas las tareas y resultados de
trabajo de importancia.
Post mórtem. Se determina la eficacia del proceso por medio de medidas y mediciones
obtenidas (ésta es una cantidad sustancial de datos que deben analizarse con métodos
estadísticos). Las medidas y mediciones deben dar la guía para modificar el proceso a
fin de mejorar su eficacia.
Según Fernández (2009) el proceso del software del equipo (TSP), junto con el proceso
personal del software (PSP), ayuda al ingeniero de alto rendimiento a:
Aseguramiento de la calidad de los productos de software.
Crear productos de software seguros.
Mejora el proceso de gerencia en una organización.
Adicionalmente, Fernández (2009) agrega que los grupos de la ingeniería que utilizan
el TSP aplican conceptos integrados del desarrollo de sistemas orientados al software,
llevando al equipo a:
Establecer metas.
Definir papeles del equipo.
Determinación de riesgos.
Producir un plan del equipo.
3. Preguntas de Comprension de la
Unidad
1. ¿Con qué objeto fueron propuestos los modelos prescriptivos?
Los modelos de proceso prescriptivo fueron propuestos originalmente para poner
orden en el caos del desarrollo de software. La historia indica que estos modelos
tradicionales han dado cierta estructura útil al trabajo de ingeniería de software y que
constituyen un mapa razonablemente eficaz para los equipos de software.
4. Material Complementario
Los siguientes recursos complementarios son sugerencias para que se pueda ampliar la
información sobre el tema trabajado, como parte de su proceso de aprendizaje
autónomo:
Videos de apoyo:
Producción de software
https://www.youtube.com/watch?v=FAhdlq0Zytk&t=265s
Bibliografía de apoyo:
Gamma , E., Helm, R., Johnson, R., & Vlissides, J. (2003). Patrones de Diseño. Addison-
Wesley.
Links de apoyo:
5. Bibliografía
» Bertoa, M., Troya, J., & Vallecillo, A. (2002). Aspectos de calidad en el desarrollo
de software basado en componentes.
» Gamma , E., Helm, R., Johnson, R., & Vlissides, J. (2003). Patrones de Diseño.
Addison-Wesley.
» Kuhn, D., Chandramouli, T., & Butler, R. (2002). Cost effective use of formal
methods in verification and validation. Maryland, USA.
» Tabares, M., Alferez Salinas, G., & Alferéz Salinas, E. (2008). El desarrollo de
software Orientado a Aspectos: Un Caso Práctico para un Sistema de Ayuda en
Línea. Avances en Sistemas e Informática.
© Universidad Estatal de Milagro – UNEMI
» Troya, J., Vallecillo, A., & Fuentes, L. (2017). Desarrollo de sodtware basado en
componentes.