Ir al contenido principal

Análisis y diseño - Taller 04

Taller 4 - Modelo ciclo de vida 

Imagen relacionadaSe 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

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:

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. Amplitud
  2. Profundidad
  3. Madurez
  4. Alternativas
  5. Alcance

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. Actividades de análisis
  2. Actividades de diseño
  3. Programación, prueba e implementación
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].

Comentarios

Entradas populares de este blog

Actividades análisis y diseño 2019-1

A lo largo del primer semestre del año 2019, en la asignatura de "Análisis y diseño" se asignaron talleres y se desarrollaron una serie de actividades a la par de las clases que se impartieron por Judith del Pilar Rodriguez Tenjo, ingeniera del departamento de sistemas de la universidad Francisco de Paula Santander. Los contenidos de la materia contenían entre otros: Sistemas de información Desarrollo de Software Roles en el desarrollo de software Comprensión de los diagramas y el lenguaje UML Ingeniería de requerimientos Análisis de sistemas Diseño de sistemas Para acceder a los talleres que se han desarrollado a lo largo del semestre en forma mas detallada seleccionar el icono hamburguesa en la esquina superior derecha, o hacer click en los enlaces de la parte inferior : Taller 1   -  Taller diagnostico Taller 2   -  Ficha bibliográfica Taller 3   -  Los Sistemas de Información Taller 4   -...

Actividades ingeniería de software 2019 - II

A lo largo del segundo semestre del año 2019, en la asignatura de "Ingeniería de software" se asignaron talleres y se desarrollaron una serie de actividades a la par de las clases que se impartieron por Judith del Pilar Rodriguez Tenjo, ingeniera del departamento de sistemas de la universidad Francisco de Paula Santander. Los contenidos de la materia contenían entre otros: Evolución, Mitos del software Ética del Ingeniero del Software El proceso del software Modelos de procesos y en equipo Estimación Proyectos software Estimaciones de costo y administración de proyectos de software Planificación Proyectos de software Administración del riesgos Aseguramiento de la Calidad Control de Calidad (CC) Métricas del Producto software Pruebas del software Administración de la configuración Para acceder a los talleres que se han desarrollado a lo largo del semestre en forma mas detallada seleccionar los enlaces de la parte inferior, también puede selecciona...