MODELO CICLO DE VIDA DEL SOFTWARE
Objetivo: Conocer los diferentes ciclos de vida para el desarrollo de software
- Explique brevemente (máximo 100 palabras), que es un proceso de software?
1. Un proceso de software es el paso a paso que se debe realizar para llegar a la construcción e implementación de un Software se habla de 5 etapas que son esenciales para la construcción de software que son los siguientes: Comunicación, Planeación, Modelado, Construcción e Implementación ya que el principal factor a tener en cuenta es la satisfacción de los interesados resolviendo su necesidad y con software de calidad.
- La ISO 12207 como define un proceso? Y cuales procesos se enmarcan principales, procesos de soporte, procesos organizacionales, procesos de adaptación.
RTA: Según la ISO 12207/UNE 77104 define que un proceso es un conjunto de actividades interrelacionadas que transforman entradas en salidas.
· PRINCIPALES:
o Adquisición.
o Suministro
o Desarrollo
o Mantenimiento
o Operación
· SOPORTE:
o Documentación
o Administración de la configuración
o Aseguramiento de la calidad
o Verificación
o Validación
o Revisiones conjuntas
o Auditorias
o Resolución de Problemas
· ORGANIZACIONALES:
o Administración
o Infraestructura
o Mejoras
o Entrenamiento
- ¿Que entiendes como un ciclo de vida? Consulta según la norma IEEE 1074 el concepto de ciclo de vida.
RTA: Es un proceso definido para el desarrollo de un producto de software, es una estructura aplicada a la construcción de un software, es una estructura planteada para cada una de las etapas de un software desde la recolección de requerimientos hasta la implementación del producto sf.
Una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software.
- 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
|
Recursos
|
personal
|
Cascada
|
Desarrolla sus fases una encima de otra, siguiendo un flujo de ejecución de arriba hacia abajo
|
Análisis.
•Diseño.
•Implantación.
•Pruebas (validación).
•Integración y mantenimiento
|
-Planificación sencilla.
-Alta calidad del producto final
-Permite trabajar con personal poco cualificado
|
-El cliente no verá resultados hasta el final.
-Es más lento.
-Tiene un costo mayor.
-Si se han cometido errores en una fase es difícil volver atrás
|
Un plan de antemano que nos prepare para todos los escenarios que puedan producirse durante esta fase.
|
-No necesita un personal altamente calificado
|
Incremental
|
Desarrollar por partes el producto software, para después integrarlas a medida que se completan.
|
•Requerimientos
•Definición de tareas
•Diseño
•Desarrollo
•Validación
•Integración
•Entrega del producto
|
- Si un error importante es realizado, sólo la última iteración necesita ser descartada y utilizar el incremento previo.
|
- Se presupone que todos los requisitos se han definido al inicio.
- Se requiere de una experiencia importante para definir los incrementos- Difícil de aplicar a sistemas transaccionales que tienden a
ser integrados y a operar como un todo. |
Los primeros incrementos se implementan con menos recursos
|
-Requiere de un grupo de programadores en el cual cada uno realiza un módulo en particular
- Requiere gestores experimentados.
|
Espiral
|
Cada bucle o iteración representa un conjunto de actividades.
|
•Requerimientos. •Análisis de riesgo. •Prototipo 1, 2.
•Req.software •Validación de Req. •Análisis de riesgo. •Prototipo 3.
•Diseño software. •Validación diseño.
• Integración y prueba
|
-Incorpora objetivos de calidad.
-Reduce riesgos del proyecto.
|
-Muy costoso.
-Genera mucho tiempo en el desarrollo del sistema.
-Es difícil de adaptar a los contratos
|
-Entrevistar con un número determinado de usuarios.
- Se formulan estrategias efectivas para resolver las fuentes de riesgos (simulación, prototipado, etc.)
|
-Participación del cliente en el proceso de desarrollo de un producto de software.
-Desarrollador de software.
|
Prototipado
|
Conduce a la construcción de un prototipo, el cual es evaluado por el cliente para una retroalimentación
|
•Requerim. Básicos •Desarr. Prot. oper. •Uso prot.
•Usuario satisfecho?. Si. Aceptar.
No. Revisar y mejorar.
|
-Resulta útil cuando el cliente conoce los objetivos generales.
-Permite la construcción del sistema con requisitos poco claros.
|
- Requiere un tiempo adicional para definir adecuadamente el sistema.
-Requiere trabajo del cliente para evaluar los distintos prototipos y traducirlo en nuevos requisitos.
-Altamente costoso y difícil para la administración temporal.
-No presenta calidad ni robustez.
|
Uso de tecnologías nuevas y poco probadas.
Elaborar Prototipado de la interfaz de usuario.
|
-Un grupo reducido de desarrolladores y el cliente define los objetivos globales y aquellos que desea destacar en el prototipo.
-Herramientas y lenguajes adecuados.
|
Iterativo
|
En cada ciclo, iteración, se revisa y mejora el producto.
|
•Comunicación.
•Planeación.
•Modelado.
•Construcción.
•Despliegue.
|
-no hace falta que los requisitos estén totalmente definidos al inicio del desarrollo.
- permite gestionar mejor los riesgos, gestionar mejor las entregas.
|
-Requiere de un cliente involucrado durante todo el curso del proyecto. Hay clientes que simplemente no estarán dispuestos a invertir el tiempo necesario.
|
Al final de cada iteración se le entrega al cliente una versión mejorada o con mayores funcionalidades del producto.
Los requerimientos no están claros por parte del cliente
|
el cliente realiza el seguimiento durante toda la etapa de desarrollo.
El equipo de desarrolladores.
|
Evolutivo
|
Desarrollo de una implantación
del sistema inicial, exponerla a los comentarios del usuario,
refinarla y generar N versiones hasta que se desarrolle el sistema
adecuado
|
•Especificación
•Desarrollo
•Validación
|
-Este modelo puede ser cambiado en cualquier momento.
-cuando los requerimientos no están completos.
|
-asume que las necesidades no son completamente conocidos al inicio del proyecto.
-requiere un especial cuidado en la manipulación de documentos.
|
Busca reemplazar el viejo sistema con uno nuevo que tendría la propiedad de satisfacer los nuevos requerimientos lo más rápido posible.
|
-Los usuarios hacen pruebas y retroalimentaciones
|
Modelo de
agrupamiento
|
Es un conjunto de clases relacionadas con un objetivo común.
|
•Especificación
•Diseño •Implementación
•Verificación/Validación
•Generalización |
-Evita el efecto todo-nada propio del modelo en cascada.
-Tiene un componente secuencial y un componente concurrente
|
-Es muy complejo
-Requiere de muchos detalles
|
-Tiempo
-Componente secuencial y un componente concurrente.
|
Un desarrollador
el desarrollo de un clúster está formado por Especificación, Diseño, Implementación, Verificación/Validación y Generalización.
|
Modelo fuente
|
se basa en una serie más extensa de elementos que se definen para el
funcionamiento dentro de desarrollo.
|
• Planificación del
negocio.
• Construcción.
-Planificación
-Investigación
- Especificación
-Implementación
- Revisión
• Entrega
|
-Presenta alto solapamiento entre iteraciones y fases.
-Realiza un análisis y estudio de las necesidades del software.
-Permite el mantenimiento del producto.
- Reduce tiempos y costes de desarrollo.
-Aumenta la fiabilidad. |
-No es aplicable para proyecto donde no se utilice el paradigma orientado a objetos.
-permite un desarrollo solapado e iterativo.
-Cada clase/agrupamiento tiene un ciclo de vida propio.
-Dificultad para reconocer los componentes potencialmente reutilizables.
-Dificultad de catalogación y recuperación.
|
una fase no comienza hasta que termina la anterior, no empieza “el diseño hasta que terminan los requisitos”.
|
el ciclo de desarrollo fuese una fuente, siendo cada fase una “burbuja”. Abajo te dejo un dibujo vintage que lo representa.
|
Modelo Pinball
|
Desarrollo de los elementos de forma interactiva ya
sea por medio de clases, atributos, métodos e interrelaciones con los diferentes aspectos del proyecto. |
• Análisis
• Diseño
• Programación
• Pruebas
• Implementación
|
-Permite fijar hitos más frecuentes, realizando entregas de sistemas operativos cada dos o tres meses, para recibir retroalimentación del cliente.
- Reduce tiempos y costes de desarrollo.
-Aumenta la fiabilidad.
-Analiza cada parte o componente del software como un objeto del mundo real.
- Al visualizar cada elemento como un objeto, facilita su implementación utilizando el paradigma orientado a objetos. -Permite la reutilización de componentes del software.
-Eliminan los límites entre fases, tornándose cada vez más difusos
debido a la naturaleza interactiva del desarrollo orientado al objeto.
-Permiten una nueva forma de concebir los lenguajes de programación
y su uso e incorporan bibliotecas de clases y otros componentes reutilizables.
-La forma de trabajo es muy dinámica, debido al alto grado de iteración
y solapamiento.
- Concebir los lenguajes de
programación y su uso, ya que se incorporan bibliotecas de clases y otros componentes reutilizables. |
-No es aplicable para proyecto donde no se utilice el paradigma orientado a objetos.
- Dificultad de gestionar de manera formal los proyectos.
-Dificultad de catalogación y recuperación.
|
-Proyecto y jugador (Cliente).
-Tecnologías
y métodos probados |
Proyecto o subproyecto
Equipo de desarrollo.
se pasa a la programación prueba e implementación
|
- De acuerdo al estudio realizado, cual seria el mejor proceso para desarrollar software?
II parte:
- Que es una Metodología de Desarrollo de Software?
RTA: Las metodologías son métodos formales que permiten pasar eficazmente del problema a la definición de la solución, tratando de garantizar la obtención del resultado, determinar la factibilidad de la aplicación, aumentar la productividad de los diseñadores, conseguir una mayor calidad del producto y permitir una gestión y organización eficiente del conjunto del proyecto.
Los sistemas en tiempo real son aplicaciones dedicadas, es decir, se realiza un desarrollo específico para cada aplicación. Este desarrollo debe satisfacer una serie de objetivos:
Cumplir las necesidades del cliente que viene dada en forma de especificaciones.
- Respetar los plazos y costos.
- Alcanzar determinados niveles de calidad.
Pero a lo largo del proceso surgen una serie de dificultades que es preciso superar. En las primeras fases es necesario adquirir una serie de conocimientos y dominar determinadas técnicas relacionadas fundamentalmente con la electrónica y la informática. Además el diseñador necesita conocer exactamente el problema y especificar al máximo su funcionalidad, su alcance y las restricciones que puedan existir. El resultado final dependerá de la conjunción de estos factores. La gestión y el desarrollo se hacen basándose en la experiencia del director del proyecto y de los componentes del mismo aplicando alguna metodología.
- Que Metodologías existen para el desarrollo de software? Clasifíquelas
- RTA: Metodología tradicionales(no ágiles): Son aquellas que están guiadas por
una fuerte planificación durante todo el proceso de desarrollo;
llamadas también metodologías tradicionales o clásicas, donde se
realiza una intensa etapa de análisis y diseño antes de la
construcción del sistema.
una fuerte planificación durante todo el proceso de desarrollo;
llamadas también metodologías tradicionales o clásicas, donde se
realiza una intensa etapa de análisis y diseño antes de la
construcción del sistema.
- Metodologías estructuradas: Estas metodologías definen los modelos del sistema que representan los procesos, los flujos y la estructura de datos de un modo descendente, pasando de una visión general del problema a un nivel de abstracción más sencillo,
pudiendo centrarse en las funciones o procesos del sistema, en la estructura de
datos o en ambas.
Entre las metodologías estructuradas identificadas tenemos los siguientes:
Gane y Sarsons, DeMarco y Yourdon
- Metodologías orientadas a objetos: El diseño orientado al objeto, al igual que otras metodologías de diseño orientadas a la información, crea una representación del campo del problema del mundo real y lo hace corresponder con el ámbito de la solución, que es el software.
El diseño orientado al objeto produce un diseño que interconecta objetos de datos
(elementos dato) y operaciones de una forma que modulariza la información y el
procesamiento; por el contrario, otros métodos dejan aparte el procesamiento.
La naturaleza única del diseño orientado al objeto queda reflejada en su capacidad de construir sobre tres pilares conceptuales importantes del diseño de software:
¨ Abstracción
¨ Ocultamiento de información
¨ Modularidad.
Entre las metodologías orientadas a objetos identificadas tenemos los siguientes:
Warnier, Jackson y Cameron
- Metodologías mixtas de las administraciones:Estas metodologías surgen a finales de los setenta y principios de los ochenta como iniciativa de distintos organismos gubernamentales y de la administración de varios países europeos.
Su objetivo consiste en dotar de una metodología de desarrollo con objeto de estandarizar los diferentes proyectos que se estaban llevando a cabo por dichos organismos.
Principales metodologías mixtas:
MERISE,
SSADM y
METRICA.
- Metodologías para sistemas tiempo real: Método de diseño desarrollado en la Universidad de York, orientado a la construcción de sistemas de tiempo real, en particular a los llamados críticos (hard). Éstos son sistemas que tienen componentes que, si no producen una respuesta dentro de un intervalo de tiempo prefijado, pueden ocasionar daños importantes.
Este tipo de metodología debe proporcionar:
- Reconocimiento explícito de los tipos de actividades/objetos que se pueden encontrar en sistemas críticos.
- Integración de los parámetros apropiados de planificación en el proceso de diseño.
-Definición explícita de los requisitos temporales de cada objeto de la aplicación.
- Definición de la importancia relativa de cada objeto para el funcionamiento correcto de la aplicación.
- Facilidades para realizar el análisis de la planificabilidad del sistema.
- Metodologías ágiles: Un proceso es ágil cuando el desarrollo de software es incremental (entregas pequeñas de software, con ciclos rápidos), cooperativo (cliente y
desarrolladores trabajan juntos constantemente con una cercana
comunicación), sencillo (el método en sí mismo es fácil de aprender y
modificar, bien documentado), y adaptable (permite realizar cambios de último
momento).
Entre las metodologías ágiles identificadas tenemos los siguientes:
Extreme Programming (XP).
Scrum.
Familia de Metodologías Crystal.
Feature Driven Development.
Proceso Unificado Rational, una configuración ágil.
- Cual sería la tendencia de desarrollo de software en cinco años?
- Tecnología Móvil
La importancia de la tecnología móvil ha ido creciendo con la aparición de los teléfonos inteligentes, y de forma aún más reciente con el Mobilgeddon.
- Big Data
El área de datos es la que manda, pero también es algo abrumador. Las compañías están recolectando cantidades masivas de datos, pero muchas están cortas de recursos cuando llega el momento de organizar datos de forma práctica.
- Software en la Nube
No puedes encender un nuevo dispositivo sin evitar alguna forma de optimización de almacenaje en la nube, ya sea iCloud, OneDrive, Google Drive o Dropbox.
Bibliografía
Pressman, Ingeniería del Software- enfoque práctico, 7ma Edición, Cap 2.
Acosta, P. (2018).ISO 12207 [online] Universidad Veracruzana de México. Available at: www.uv.mx/personal/ermeneses/files/2018/05/1-ISO_12207_exposicion.pptx
[Accessed 24 Feb. 2019].
Universidad Nacional de La Plata [online] Available at: http://sedici.unlp.edu.ar/bitstream/handle/10915/4055/3_-_La_ingenier%C3%ADa_de_software.pdf?sequence=7 [Accessed 24 Feb. 2019].
Ingeniería del Software [online] Available at:https://www.infor.uva.es/~jvalvarez/docencia/ptema4is1.pdf [Accessed 24 Feb. 2019].
Tema 3: Metodología orientada al objeto [online] Available at: ftp://www.dlsi.ua.es/people/jaime/apuntes/isi_tema3.1.pdf [Accessed 24 Feb. 2019].
Developing a Software Project Life Cycle Process (IEEE 1074), 30 de marzo de 2006.
Facultad de Ingeniería [online], Universidad de la República - Uruguay https://www.fing.edu.uy/tecnoinf/maldonado/cursos/2015/rpyl/desarrolloSoftware.pdf [Accessed 24 Feb. 2019].
Silva, José.(2014). Ciclos de vida orientado a objetos [online] Available at: https://es.slideshare.net/josefabiandiazs/ciclos-de-vida-orientados-a-objetos [Accessed 24 Feb. 2019].
UNID, UNIVERSIDAD INTERAMERICANA PARA EL DESARROLLO. Desarrollo orientado a objetos [online] https://mimateriaenlinea.unid.edu.mx/dts_cursos_mdl/lic/IEL/DOO/S02/DOO02_Lectura.pdf [Accessed 24 Feb. 2019].
Tema 7 - Metodología para el desarrollo de sistemas en tiempo real, Aula Net [online] http://isa.uniovi.es/docencia/TiempoReal/Recursos/temas/tema7.pdf [Accessed 24 Feb. 2019].
Ciclo de Vida del Software, IMPLEMENTACIÓN Y DEBUGGING, Capítulo 1 [online] https://ingsw.pbworks.com/f/Ciclo+de+Vida+del+Software.pdf [Accessed 24 Feb. 2019].
No hay comentarios:
Publicar un comentario