Taller 4 - Modelo ciclo de vida
Se realizo un taller acerca de la temática de los ciclos de vida del software el cual su objetivo era dar a conocer los diferentes ciclos de vida para el desarrollo de software
A continuación las preguntas que lo conformaban y las respuestas dadas(Este taller se realizo en grupos de 4 personas):
1. ¿Explique brevemente (máximo 100 palabras), que es un proceso de software?
Es la secuencia de actividades que conducen a la elaboración de un producto de software, los procesos de software tienen 4 actividades que son fundamentales
• Especificación del software
• Desarrollo de software
• Validación de software
• Evolución de software (Pantaleo & Rinaudo, 2015, p. 9)
2. ¿La ISO 12207 como define un proceso? Y cuales procesos se enmarcan principales, procesos de soporte, procesos organizacionales, procesos de adaptación.
Proceso: Conjunto de actividades mutuamente relacionadas o que interactúan, las cuales transforman elementos de entrada en resultados(Comerciales, 2006)
Procesos principales.
• Adquisición.
• Suministro.
• Desarrollo.
• Operación.
• Mantenimiento.
• Destrucción
Procesos de soporte.
• Gestión de la configuración.
• Aseguramiento de calidad.
• Verificación.
• Validación.
• Revisión conjunta.
• Auditoría.
• Resolución de problemas.
Procesos de la organización.
• Gestión.
• Infraestructura.
• Mejora.
• Recursos Humanos.(Pino, García, Ruiz, Piattini, & Tanenbaum, 2006)
3. ¿Qué entiendes como un ciclo de vida? Consulta según la norma IEEE 1074 el concepto de ciclo de vida.
El ciclo de vida es una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software.
Este estándar ha sido desarrollado por la IEEE para determinar el conjunto de actividades esenciales que deben ser incorporadas en el desarrollo de un producto software, sin recomendar un ciclo de vida específico. Cabe mencionar que el IEEE 1074 requiere adaptarse a cada proyecto. Las actividades que no se incluyan deben justificarse.
Cada organización debe asociar las actividades definidas en el estándar a su propio ciclo de vida del software.
El seguimiento del estándar no implica el uso de ningún método específico, ni la creación de determinados documentos.
4. De los ciclos de vida tradicionales (cascada, incremental, espiral, prototipado, reutilización, evolutivo) y los ciclos de vida para sistemas Orientado a Objetos (modelo de agrupamiento, modelo fuente, modelo remolino, modelo pinball) haz una comparación entre ellos, indicando las fases, bondades y desventajas de estos, UTILIZA la siguiente tabla:
5. ¿De acuerdo al estudio realizado, cuál sería el mejor proceso para desarrollar software?
El modelo espiral por su gran fiabilidad, ya que integra objetivos de funcionabilidad y rendimiento, posee muy buenas actividades de reducción de riesgos generados por los cambios del cliente y además interpreta el desarrollo al mismo tiempo que el mantenimiento lo cual lleva a una aún mejor reducción de errores.
II parte:
6. ¿Qué es una Metodología de Desarrollo de Software?
Una metodología de desarrollo de software es el estudio y determinación de cuál es el método más adecuado para dar incremento a algo, en este caso al software logrando la construcción de un sistema informático eficiente, que cumpla con los requerimientos planteados, siendo una tarea realmente intensa y sobre todo difícil de cumplir. Las metodologías para el desarrollo del software imponen un proceso disciplinado sobre el desarrollo de software con el fin de hacerlo más predecible y eficiente. Una metodología de desarrollo de software tiene como principal objetivo aumentar la calidad del software que se produce en todas y cada una de sus fases de desarrollo. No existe una metodología de software universal, ya que toda metodología debe ser adaptada a las características de cada proyecto exigiéndose así que el proceso sea configurable.
7. ¿Qué Metodologías existen para el desarrollo de software? Clasifíquelas
Metodologías clásicas:
• Ciclo de Vida o Cascada
• Incremental
• Evolutivo
• Espiral
• Prototipos
• Desarrollo basado en componentes
Metodologías orientadas a objetos:
• Fusion
• Object Modelling Technique (OMT)
• Object Management Facility (OMF)
• Object Management System (OMS)
• Unified Process (UP)
Metodologías ágiles:
• Programación extrema (XP)
• Mobile-D
• Scrum
• Crystal
• Evolutionary Project Management (Evo)
• Feature Driven Development (FDD)
• Adaptive Software Development (ASD)
• Lean Development
Metodologías formales:
• Red de Pettri
• RAISE
• Vienna Development Method (VDM)
Metodologías para la web:
• Ingeniería web
• Diseño de webapps
• Método de diseño de hipermedios orientados a objetos (MDHOO)
8. ¿Cuál sería la tendencia de desarrollo de software en cinco años?
En la actualidad la mayoría de las empresas usan metodologías agiles para sus proyectos de software, mostrando un historial de éxito mayor al de las metodologías tradicionales.
El reciente “12th anual state of Agile report” de la empresa “CollabNet VersionOne” profundiza en detalle respecto al uso de las metodologías Agile a nivel corporativo, este reporte es uno de los más completos y actualizados en la industria ya que contempla información de los 5 continentes y permite tener una visión global del avance de Agile en las empresas.
En ese contexto, el reporte indicó que Scrum es el framework Agile más usado por las empresas con un 56% de preferencias versus un 14% que utiliza una metodología híbrida y un 5% que emplea Kanban.
Con ello vemos una importante tendencia en el uso de este marco de trabajo para implementar Agile a nivel empresarial, Scrum destaca por ser un framework que permite fomentar la innovación y entregar resultados de alta calidad de forma temprana.
Referencias
1. ¿Explique brevemente (máximo 100 palabras), que es un proceso de software?
Es la secuencia de actividades que conducen a la elaboración de un producto de software, los procesos de software tienen 4 actividades que son fundamentales
• Especificación del software
• Desarrollo de software
• Validación de software
• Evolución de software (Pantaleo & Rinaudo, 2015, p. 9)
2. ¿La ISO 12207 como define un proceso? Y cuales procesos se enmarcan principales, procesos de soporte, procesos organizacionales, procesos de adaptación.
Proceso: Conjunto de actividades mutuamente relacionadas o que interactúan, las cuales transforman elementos de entrada en resultados(Comerciales, 2006)
Procesos principales.
• Adquisición.
• Suministro.
• Desarrollo.
• Operación.
• Mantenimiento.
• Destrucción
Procesos de soporte.
• Gestión de la configuración.
• Aseguramiento de calidad.
• Verificación.
• Validación.
• Revisión conjunta.
• Auditoría.
• Resolución de problemas.
Procesos de la organización.
• Gestión.
• Infraestructura.
• Mejora.
• Recursos Humanos.(Pino, García, Ruiz, Piattini, & Tanenbaum, 2006)
3. ¿Qué entiendes como un ciclo de vida? Consulta según la norma IEEE 1074 el concepto de ciclo de vida.
El ciclo de vida es una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software.
Este estándar ha sido desarrollado por la IEEE para determinar el conjunto de actividades esenciales que deben ser incorporadas en el desarrollo de un producto software, sin recomendar un ciclo de vida específico. Cabe mencionar que el IEEE 1074 requiere adaptarse a cada proyecto. Las actividades que no se incluyan deben justificarse.
Cada organización debe asociar las actividades definidas en el estándar a su propio ciclo de vida del software.
El seguimiento del estándar no implica el uso de ningún método específico, ni la creación de determinados documentos.
4. De los ciclos de vida tradicionales (cascada, incremental, espiral, prototipado, reutilización, evolutivo) y los ciclos de vida para sistemas Orientado a Objetos (modelo de agrupamiento, modelo fuente, modelo remolino, modelo pinball) haz una comparación entre ellos, indicando las fases, bondades y desventajas de estos, UTILIZA la siguiente tabla:
Ciclo
de vida
|
Objetivo
|
Fases
|
Ventajas
|
Desventajas
|
Cascada
|
Toma las
actividades fundamentales del proceso de especificación, desarrollo,
validación y evolución y, luego, los representa como fases separadas del
proceso.
|
1. Análisis y definición de
requerimientos
2. Diseño del sistema y del software
3. Implementación y prueba de unidad
4. Integración y prueba de sistema
5. Operación y mantenimiento
|
1.
El
resultado de cada fase consiste en uno o más documentos. Es decir, una vez
finalizada una fase brinda importantes herramientas a las fases posteriores.
2.
Se
puede ver mejor el proceso, de modo que los administradores pueden monitorear
el progreso contra el plan de desarrollo.
3.
Es
un modelo conocido y fácil de implementar.
|
1.
Tiene
dificultad para responder a los requerimientos cambiantes del cliente.
2.
La
siguiente fase no debe comenzar sino hasta que termine la fase previa.
3.
Las
iteraciones suelen ser onerosas e implicar un rediseño significativo.
4.
El
proceso de creación del software tarda mucho tiempo.
|
Espiral
|
El proceso de
software se representa como una espiral, y no como una secuencia de
actividades con cierto retroceso de una actividad a otra. incluye actividades
de gestión de riesgos explícitas para reducir riesgos generados por los
cambios.
|
1.
Establecimiento
de objetivos
2.
Valoración
y reducción del riesgo
3.
Desarrollo
y validación
4.
Planeación
|
1.
Reduce riesgos del proyecto.
2.
Se elaboran objetivos como rendimiento y funcionalidad
3.
Integra el desarrollo con el mantenimiento.
|
1.
Genera mucho tiempo en el desarrollo del sistema.
2.
Requiere experiencia en la identificación de riesgos.
3.
No se ha utilizado tanto como los paradigmas lineales secuenciales o de
construcción de prototipos.
|
Prototipado
|
Conduce a la
construcción de un prototipo, el cual es evaluado por el cliente para una
retroalimentación; gracias a ésta se refinan los requisitos del software que
se desarrollará.
|
1. Comunicación
2. Plan rápido.
3. Modelado, diseño rápido
4. Construcción del Prototipo
5. Desarrollo, entrega y
retroalimentación
6. Entrega del desarrollo final
|
1.
Este modelo es útil cuando el cliente conoce los objetivos generales para
el software, pero no identifica los requisitos detallados de entrada,
procesamiento o salida.
2.
Se puede reutilizar el código.
|
1.
El usuario tiende a crearse unas expectativas
cuando ve el prototipo de cara al sistema final.
2.
Por desarrollar rápidamente el prototipo, el
desarrollador suele tomar algunas decisiones de implementación poco
convenientes.
|
Reutilización
|
La idea es
reutilizar elementos y componentes de Software en lugar de tener que
desarrollarlos desde el principio.
|
1.
Definición
de requisitos
2.
Análisis
de componentes
3.
Modificación
de requisitos
4.
Diseño
del sistema con reutilización
5.
Desarrollo
e integración
6.
Validación
del sistema
7.
|
1.
Tiempos
de desarrollo cortos
2.
Disminución
de errores
3.
Disminución
de costos y riesgos
4.
Aumento
de la confiabilidad por componentes ya probados y utilizados
|
1.
Si
no existen componentes se deben desarrollar.
2.
Existe
la posibilidad que el software no cumpla las expectativas del cliente
3.
Problemas
de gestión de configuración
|
Evolutivo
|
Es un modelo
parecido al prototipado pero en este se asume que los requisitos pueden
cambiar en cualquier momento del ciclo de vida y no solo en la etapa de
análisis.
|
1.
Especificación
inicial
2.
Desarrollo
del producto
3.
Implementación,
uso y evaluación
4.
Re-especificación
|
5. Reconoce
la naturaleza evolutiva de la mayoría de los proyectos de desarrollo
software.
6. Proporciona
resultados en plazos más razonables que el modelo en cascada.
7.
Hay que implicar a los usuarios.
|
1.
Es difícil predecir el coste y duración de un
proyecto
2.
Difícil
de aplicar a los sistemas transaccionales que tienden a ser integrados y a
operar como un todo.
3.
Requiere
gestores experimentados
|
Modelo de
agrupamiento
|
Es conjunto de
clases relacionadas con un objetivo común (denominadas clúster). Estos
permiten modularidad (Subdividen una aplicación en partes más pequeñas) y
reutilización
|
Cada sub- ciclo de
vida comprende
1.
Especificación
2.
Diseño
3.
Realización
4.
Validación
5.
Generalización
|
1.
Es
secuencial
2.
Existencia
de sub-ciclos
|
1.
Es
muy complejo de desarrollar
2.
Está
orientada a proyectos con un solo desarrollador
|
Modelo fuente
|
Representa
gráficamente el alto grado de iteración por lo que se hace un análisis de
requisitos, a partir del cual va creciendo el ciclo de vida, cayendo sólo
para el mantenimiento necesario al repositorio de clases.
|
1. Planificación del negocio
2. Construcción: Es la más importante y se divide a su
vez en otras cinco actividades
a. Planificación
b. Investigación
c. Especificación
d. Implementación
e. Revisión
3. Entrega
|
1.
Posee
2 periodos denominados crecimiento y madurez que poseen las mismas fases,
pero el segundo es solo dedicado a mantenimiento y mejoras.
2.
La
calidad del producto resultante es alta.
3.
Permite
trabajar con personal poco cualificado
|
1.
Si se comete un error en la fase de análisis no
lo descubrimos hasta la entrega, con el consiguiente gasto inútil de recursos
|
Modelo remolino
|
El ciclo de vida de
un desarrollo orientado al objeto es desordenado, involucrando múltiples
iteraciones interrelacionadas.
|
|
1.
Supone
una mejora al modelo cascada que solo se trabajaba linealmente.
2.
Asume
una visión real de las metodologías de desarrollo.
|
1. No es aplicable para proyecto donde no se utilice el paradigma
orientado a objetos.
2. Dificultad para reconocer los componentes potencialmente
reutilizables.
|
Modelo pinball
|
Modelo muy
didáctico señala que el pinball refleja la forma que se desarrolla el
software.
|
|
1.
Modelo
sencillo de implementar
2.
Posee
un estilo de “a lo seguro” que implementa tecnologías y métodos probados,
aumentando la fiabilidad.
3.
Posee
un estilo de “al límite” que posee más riesgos, pero puede aumentar mucho los
beneficios.
|
1.
No es aplicable para
proyecto donde no se utilice el paradigma orientado a objetos.
2.
Problemas de gestión
de configuración.
3. Dificultad para reconocer los componentes potencialmente
reutilizables.
|
5. ¿De acuerdo al estudio realizado, cuál sería el mejor proceso para desarrollar software?
El modelo espiral por su gran fiabilidad, ya que integra objetivos de funcionabilidad y rendimiento, posee muy buenas actividades de reducción de riesgos generados por los cambios del cliente y además interpreta el desarrollo al mismo tiempo que el mantenimiento lo cual lleva a una aún mejor reducción de errores.
II parte:
6. ¿Qué es una Metodología de Desarrollo de Software?
Una metodología de desarrollo de software es el estudio y determinación de cuál es el método más adecuado para dar incremento a algo, en este caso al software logrando la construcción de un sistema informático eficiente, que cumpla con los requerimientos planteados, siendo una tarea realmente intensa y sobre todo difícil de cumplir. Las metodologías para el desarrollo del software imponen un proceso disciplinado sobre el desarrollo de software con el fin de hacerlo más predecible y eficiente. Una metodología de desarrollo de software tiene como principal objetivo aumentar la calidad del software que se produce en todas y cada una de sus fases de desarrollo. No existe una metodología de software universal, ya que toda metodología debe ser adaptada a las características de cada proyecto exigiéndose así que el proceso sea configurable.
7. ¿Qué Metodologías existen para el desarrollo de software? Clasifíquelas
Metodologías clásicas:
• Ciclo de Vida o Cascada
• Incremental
• Evolutivo
• Espiral
• Prototipos
• Desarrollo basado en componentes
Metodologías orientadas a objetos:
• Fusion
• Object Modelling Technique (OMT)
• Object Management Facility (OMF)
• Object Management System (OMS)
• Unified Process (UP)
Metodologías ágiles:
• Programación extrema (XP)
• Mobile-D
• Scrum
• Crystal
• Evolutionary Project Management (Evo)
• Feature Driven Development (FDD)
• Adaptive Software Development (ASD)
• Lean Development
Metodologías formales:
• Red de Pettri
• RAISE
• Vienna Development Method (VDM)
Metodologías para la web:
• Ingeniería web
• Diseño de webapps
• Método de diseño de hipermedios orientados a objetos (MDHOO)
8. ¿Cuál sería la tendencia de desarrollo de software en cinco años?
En la actualidad la mayoría de las empresas usan metodologías agiles para sus proyectos de software, mostrando un historial de éxito mayor al de las metodologías tradicionales.
El reciente “12th anual state of Agile report” de la empresa “CollabNet VersionOne” profundiza en detalle respecto al uso de las metodologías Agile a nivel corporativo, este reporte es uno de los más completos y actualizados en la industria ya que contempla información de los 5 continentes y permite tener una visión global del avance de Agile en las empresas.
En ese contexto, el reporte indicó que Scrum es el framework Agile más usado por las empresas con un 56% de preferencias versus un 14% que utiliza una metodología híbrida y un 5% que emplea Kanban.
Con ello vemos una importante tendencia en el uso de este marco de trabajo para implementar Agile a nivel empresarial, Scrum destaca por ser un framework que permite fomentar la innovación y entregar resultados de alta calidad de forma temprana.
Referencias
Comerciales, C. de R. T. y. (2006). NTP-ISO / IEC 12207 TECNOLOGÍA DE LA INFORMACIÓN . Procesos del, (Lima 41), 194.
Pantaleo, G., & Rinaudo, L. (2015). Ingeniería de software.
Pino, F. J., García, F., Ruiz, F., Piattini, M., & Tanenbaum, A. S. (2006). Adaptación de las Normas ISO/IEC 12207:2002 e ISO/IEC 15504:2003 para la Evaluación de la Madurez de Procesos Software en Países en Desarrollo. IEEE Latin America Transactions, 4(2), 632. https://doi.org/10.1590/S0103-17592007000300002
Sommerville, I. (2011). Ingenieria de software. 9th ed. Pearson Education.
Ecured.cu. (2011). Modelo espiral. [online] Available at: https://www.ecured.cu/Modelo_espiral [Accessed 24 Feb. 2019].
Es.wikipedia.org. (2003). Ingeniería de software. [online] Available at: https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software [Accessed 24 Feb. 2019].
Es.wikipedia.org. (2008). Metodologias de desarrollo de software. [online] Available at: https://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software [Accessed 24 Feb. 2019].
Es.wikipedia.org. (2014). Modelo de prototipos. [online] Available at: https://es.wikipedia.org/wiki/Modelo_de_prototipos [Accessed 24 Feb. 2019].
Pressman, R. (2010). Software engineering. 7th ed. McGraw Hill.
Elbotondereset.blogspot.com. (2008). Modelo de Reutilización de Software. [online] Available at: http://elbotondereset.blogspot.com/2008/09/modelo-de-reutilizacion-de-software.html [Accessed 24 Feb. 2019].
Fonseca Gomez, J. (2013). modelo basado en Reutilización. [online] prezi.com. Available at: https://prezi.com/cktldxxqgt3n/modelo-basado-en-reutilizacion/ [Accessed 24 Feb. 2019].
Cataldi, Z. (2000). Una metodología para el diseño, desarrollo y evaluación de software educativo. (Tesis de maestría). Universidad nacional de La Plata, La Plata, Argentina.
Ingeniería De Software. (n.d.). Ciclo De Vida Orientado A Objetos. [online] Available at: https://ingenieriadesoftwaretdea.weebly.com/ciclo-de-vida-orientado-a-objetos.html [Accessed 24 Feb. 2019].
Avila Jiménez, J. (2016). El ciclo de vida del desarrollo de aplicaciones. Elearning.
Vidadelsoftware.wordpress.com. (n.d.). Modelos Orientados a Objetos. [online] Available at: https://vidadelsoftware.wordpress.com/modelos-orientados-a-objetos/ [Accessed 24 Feb. 2019].
Jiménez Ruiz, B. (2012). Análisis comparativo de los ciclos de vida. (Trabajo de postgrado). Universidad autónoma Gabriel Rene Moreno.
Sites.google.com. (n.d.). MODELO INCREMENTAL O EVOLUTIVO - Programación Estructurada. [online] Available at: https://sites.google.com/site/programacion1electronica/metodologias-de-desarrollo-de-software/modelo-incremental-o-evolutivo [Accessed 24 Feb. 2019].
Pantaleo, G., & Rinaudo, L. (2015). Ingeniería de software.
Pino, F. J., García, F., Ruiz, F., Piattini, M., & Tanenbaum, A. S. (2006). Adaptación de las Normas ISO/IEC 12207:2002 e ISO/IEC 15504:2003 para la Evaluación de la Madurez de Procesos Software en Países en Desarrollo. IEEE Latin America Transactions, 4(2), 632. https://doi.org/10.1590/S0103-17592007000300002
Sommerville, I. (2011). Ingenieria de software. 9th ed. Pearson Education.
Ecured.cu. (2011). Modelo espiral. [online] Available at: https://www.ecured.cu/Modelo_espiral [Accessed 24 Feb. 2019].
Es.wikipedia.org. (2003). Ingeniería de software. [online] Available at: https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software [Accessed 24 Feb. 2019].
Es.wikipedia.org. (2008). Metodologias de desarrollo de software. [online] Available at: https://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software [Accessed 24 Feb. 2019].
Es.wikipedia.org. (2014). Modelo de prototipos. [online] Available at: https://es.wikipedia.org/wiki/Modelo_de_prototipos [Accessed 24 Feb. 2019].
Pressman, R. (2010). Software engineering. 7th ed. McGraw Hill.
Elbotondereset.blogspot.com. (2008). Modelo de Reutilización de Software. [online] Available at: http://elbotondereset.blogspot.com/2008/09/modelo-de-reutilizacion-de-software.html [Accessed 24 Feb. 2019].
Fonseca Gomez, J. (2013). modelo basado en Reutilización. [online] prezi.com. Available at: https://prezi.com/cktldxxqgt3n/modelo-basado-en-reutilizacion/ [Accessed 24 Feb. 2019].
Cataldi, Z. (2000). Una metodología para el diseño, desarrollo y evaluación de software educativo. (Tesis de maestría). Universidad nacional de La Plata, La Plata, Argentina.
Ingeniería De Software. (n.d.). Ciclo De Vida Orientado A Objetos. [online] Available at: https://ingenieriadesoftwaretdea.weebly.com/ciclo-de-vida-orientado-a-objetos.html [Accessed 24 Feb. 2019].
Avila Jiménez, J. (2016). El ciclo de vida del desarrollo de aplicaciones. Elearning.
Vidadelsoftware.wordpress.com. (n.d.). Modelos Orientados a Objetos. [online] Available at: https://vidadelsoftware.wordpress.com/modelos-orientados-a-objetos/ [Accessed 24 Feb. 2019].
Jiménez Ruiz, B. (2012). Análisis comparativo de los ciclos de vida. (Trabajo de postgrado). Universidad autónoma Gabriel Rene Moreno.
Sites.google.com. (n.d.). MODELO INCREMENTAL O EVOLUTIVO - Programación Estructurada. [online] Available at: https://sites.google.com/site/programacion1electronica/metodologias-de-desarrollo-de-software/modelo-incremental-o-evolutivo [Accessed 24 Feb. 2019].
Comentarios
Publicar un comentario