¿Cuáles son los modelos de desarrollo de software? ¿Cuáles son sus características?
¿El primer modelo de desarrollo de software fue el de 1970W? El modelo de cascada propuesto por Royce. El modelo proporciona una secuencia fija y las actividades del ciclo de vida pasan gradualmente de la etapa anterior a la siguiente como el agua, y finalmente el producto de software desarrollado se pone en uso. Pero cuando la informática se expande al análisis estadístico, los negocios y otros campos, la mayoría de los programas se escriben en lenguajes de alto nivel (como FORTRAN, COBOL). El modelo en cascada también tiene algunas desventajas, como la falta de flexibilidad y la incapacidad de articular requisitos menos precisos a través de actividades concurrentes. Los modelos de desarrollo de software comunes incluyen el modelo evolutivo, el modelo en espiral, el modelo de fuente y el modelo de inteligencia. Edite el modelo de desarrollo típico en este párrafo. Los modelos de desarrollo típicos son:
1. Modelo de construcción y reparación;
2. Modelo en cascada;
3. Modelo de creación rápida de prototipos. >4. Modelo incremental (modelo evolutivo);
5. Modelo espiral;
6. Modelo fuente
7. 4GL)););
8. Modo híbrido;
Modo 9.RUP;
Modelo 10.IPD
1. Modelo de construcción y reparación Desafortunadamente, muchos productos se desarrollan utilizando el modelo de “construcción y reparación”. En este modelo no hay especificaciones ni diseños, y el software se modifica constantemente una y otra vez según las necesidades del cliente.
En este modo, los desarrolladores escriben programas inmediatamente de acuerdo con los requisitos después de recibir el proyecto y generan la primera versión del software después de la depuración. Después de ser proporcionado a los usuarios, si hay un error en el programa o el usuario plantea nuevos requisitos, el desarrollador modificará el código nuevamente hasta que el usuario esté satisfecho.
Este es un método de desarrollo estilo taller, que no está mal para escribir pequeños programas de unos pocos cientos de líneas, pero no es satisfactorio para desarrollos de cualquier escala. Los principales problemas son: (1) falta de vínculos de planificación y diseño, la estructura del software empeora cada vez más con modificaciones continuas y no puede continuar modificándose (2) ignorar el vínculo de requisitos trae grandes riesgos para el desarrollo de software; (3) sin considerar las pruebas y la mantenibilidad del programa, sin ninguna documentación, mantener el software es muy difícil.
2. Modelo en cascada
Winston Royce propuso el famoso modelo en cascada en 1970. Hasta principios de la década de 1980, era el único modelo ampliamente utilizado en el desarrollo de software.
En el modelo en cascada, como se muestra en la figura, el ciclo de vida del software se divide en seis actividades básicas: planificación, análisis de requisitos, diseño de software, programación, pruebas de software y operación y mantenimiento, y estipula que comience de arriba a abajo. La secuencia fija de conexiones cae paso a paso como una cascada. En el modelo en cascada, todas las actividades de desarrollo de software se llevan a cabo de manera estrictamente lineal, donde la actividad actual acepta los resultados del trabajo de la actividad anterior y logra el contenido de trabajo requerido. Necesidad de verificar los resultados del trabajo de la actividad actual. Si pasa la validación, el resultado se utilizará como entrada para la siguiente actividad para continuar; de lo contrario, se modificará. El modelo en cascada enfatiza el papel de la documentación y requiere una verificación cuidadosa en cada etapa. Sin embargo, el proceso lineal de este modelo es demasiado ideal, ya no es adecuado para los modelos de desarrollo de software modernos y casi ha sido abandonado por la industria.
Los principales problemas son: (1) La división de cada etapa es completamente fija y se genera una gran cantidad de documentos entre etapas, lo que aumenta considerablemente la carga de trabajo (2) Dado que el modelo de desarrollo es lineal, los usuarios no pueden verlo hasta el final; los resultados del desarrollo al final de todo el proceso aumentan el riesgo de desarrollo; (3) Es posible que los errores tempranos no se descubran hasta la etapa de prueba del desarrollo posterior, lo que traerá graves consecuencias.
Debemos darnos cuenta de que "lineal" es el método de pensamiento más fácil de dominar y utilizar con habilidad. Cuando las personas se encuentran con un problema complejo "no lineal", siempre harán todo lo posible para descomponerlo o transformarlo en una serie de problemas lineales simples y luego resolverlos uno por uno. Un sistema de software en su conjunto puede ser complejo, pero las subrutinas individuales siempre son simples y pueden implementarse de manera lineal; de lo contrario, resultarán demasiado agotadoras para trabajar. La linealidad es simplicidad y la simplicidad es belleza. Cuando comprendemos el espíritu de la linealidad, no debemos aplicar mecánicamente la apariencia del modelo lineal, sino utilizarlo vívidamente. Por ejemplo, el modelo incremental es esencialmente un modelo lineal por partes, mientras que el modelo en espiral es un modelo lineal de curva continua. También se pueden encontrar sombras del modelo lineal en otros modelos.
3. Modelo de prototipo rápido (Modelo de prototipo rápido) El primer paso del modelo de creación de prototipos rápidos es construir un prototipo rápido que permita a los clientes o futuros usuarios interactuar con el sistema. prototipo y refinar aún más los requisitos del software a desarrollar. Al ajustar gradualmente el prototipo para satisfacer los requisitos del cliente, los desarrolladores pueden determinar cuáles son las necesidades reales del cliente; el segundo paso es aprovechar el primero para desarrollar un producto de software que satisfaga al cliente.
Obviamente, el método de creación rápida de prototipos puede superar las deficiencias del modelo en cascada y reducir los riesgos de desarrollo causados por requisitos de software poco claros, y el efecto es significativo. La clave para la creación rápida de prototipos es crear prototipos de software lo más rápido posible. Una vez identificadas las verdaderas necesidades del cliente, se descarta el prototipo construido. Por tanto, la estructura interna del sistema prototipo no es importante. Es importante destacar que los prototipos deben construirse rápidamente y luego modificarse rápidamente para reflejar las necesidades del cliente.
4. El modelo incremental también se denomina modelo evolutivo. Al igual que la construcción de un edificio, el software se construye paso a paso. En el modelo incremental, el software se diseña, implementa, integra y prueba como una serie de componentes incrementales, cada uno de los cuales consta de fragmentos de código que proporcionan una funcionalidad específica formada por varios módulos interactivos.
El modelo incremental no ofrece un producto completo que pueda ejecutarse en cada etapa, sino más bien un subconjunto del producto que satisface las necesidades del cliente. El producto completo se divide en varios componentes y los desarrolladores entregan el producto uno por uno. La ventaja de esto es que el desarrollo de software puede adaptarse mejor a los cambios y los clientes pueden ver continuamente el software desarrollado, lo que reduce los riesgos de desarrollo. Sin embargo, el modelo incremental también tiene los siguientes defectos: (1) Dado que cada componente se incorpora gradualmente a la arquitectura de software existente, agregar componentes no debe destruir la parte del sistema construida, lo que requiere que el software tenga una estructura de sistema abierta. (2) En el proceso de desarrollo, los cambios en la demanda son inevitables. La flexibilidad del modelo incremental puede hacerlo mucho mejor que el modelo en cascada y el modelo de creación rápida de prototipos para adaptarse a tales cambios, pero también puede degenerar fácilmente en un modelo que se modifica mientras se hace, perdiendo así la integridad del control del proceso de software. Cuando se utiliza un modelo incremental, el primer incremento suele ser el producto principal que satisface la necesidad básica. Una vez que el producto principal se entrega a los usuarios, el siguiente paso del plan de desarrollo incremental se forma después de la evaluación, incluida la modificación del producto principal y el lanzamiento de algunas características nuevas. Este proceso se repite después de cada lanzamiento incremental hasta que se produce el producto final perfecto. Por ejemplo, utilice el modelo incremental para desarrollar software de procesamiento de textos. Se puede considerar que el primer incremento libera funciones básicas de administración de archivos, edición y generación de documentos, el segundo incremento libera funciones de edición y generación de documentos más completas, el tercer incremento implementa funciones de revisión ortográfica y gramatical, y el cuarto incremento agrega un diseño de página avanzado completo. funciones.
5. Modelo en espiral
En 1988, Barry Boehm publicó oficialmente el "Modelo en espiral" de desarrollo de sistemas de software, combinando el modelo en cascada con el modelo de creación rápida de prototipos, enfatizando las ventajas de otros. Los modelos de análisis de riesgos descuidados son particularmente adecuados para sistemas grandes y complejos.
Como se muestra en la figura, el modelo en espiral se repite varias veces a lo largo de la espiral. Los cuatro cuadrantes de la figura representan las siguientes actividades: (1) Hacer un plan: determinar los objetivos del software, seleccionar el plan de implementación. y aclarar las limitaciones del desarrollo del proyecto; (2) Análisis de riesgos: analizar y evaluar la solución seleccionada, y considerar cómo identificar y eliminar los riesgos (3) Proyecto de implementación: implementar el desarrollo y verificación del software; evaluar el trabajo de desarrollo y proponer sugerencias de modificación, hacer planes para los próximos pasos. El modelo en espiral está impulsado por el riesgo y enfatiza las alternativas y limitaciones que respaldan la reutilización del software, lo que ayuda a integrar la calidad del software como un objetivo especial en el desarrollo de productos. Sin embargo, el modelo en espiral también tiene ciertas limitaciones, como las siguientes: (1) El modelo en espiral enfatiza el análisis de riesgos, pero no es fácil para muchos clientes aceptar y creer en este análisis y realizar reacciones relevantes. Por lo tanto, este modelo suele ser adecuado para el desarrollo interno de software a gran escala. (2) No tiene sentido realizar un análisis de riesgos si su ejecución afectará en gran medida las ganancias del proyecto. Por tanto, el modelo en espiral sólo es adecuado para grandes proyectos de software. (3) Los desarrolladores de software deben ser buenos para descubrir posibles riesgos y analizarlos con precisión; de lo contrario, traerá mayores riesgos. Una etapa primero determina los objetivos de la etapa, las opciones para completar estos objetivos y sus limitaciones, y luego analiza la estrategia de desarrollo del programa desde una perspectiva de riesgo para tratar de eliminar varios riesgos potenciales, a veces mediante la construcción de prototipos. Si ciertos riesgos no se pueden eliminar, el programa se cancelará inmediatamente; de lo contrario, comenzará el siguiente paso de desarrollo. Finalmente, evaluar los resultados de esta fase y diseñar la siguiente.
6. Modelo de fuente (también llamado modelo de vida orientado a objetos, modelo OO)
En comparación con el ciclo de vida estructurado tradicional, el modelo de fuente tiene más incrementos y es de naturaleza iterativa, cada uno de ellos. La etapa del ciclo de vida puede superponerse y repetirse varias veces, y las subvidas pueden integrarse en todo el ciclo de vida del proyecto. Al igual que el agua rociada caerá, puede caer en el medio o puede caer en el fondo.
7. Modelo inteligente (tecnología de cuarta generación (4GL))
El modelo inteligente tiene un conjunto de herramientas (como consulta de datos, generación de informes, procesamiento de datos, definición de pantalla, código). generación, funciones gráficas avanzadas y hojas de cálculo, etc.), y cada herramienta permite a los desarrolladores definir algunas características del software en un alto nivel y generar automáticamente este software definido por el desarrollador como código fuente. Este enfoque requiere soporte de lenguaje de cuarta generación (4GL). 4GL se diferencia del lenguaje de tercera generación su característica principal es que la interfaz de usuario es extremadamente amigable, por lo que incluso los programadores no profesionales sin capacitación pueden usarlo para escribir programas. Es un lenguaje de programación declarativo, interactivo y no procedimental. 4GL también tiene un código de programa eficiente, suposiciones predeterminadas inteligentes, una base de datos completa y un creador de aplicaciones. Actualmente, los 4GL populares en el mercado (como Foxpro, etc.) tienen las características anteriores en diversos grados. Sin embargo, actualmente 4GL se limita principalmente al desarrollo de aplicaciones pequeñas y medianas en sistemas de información de transacciones.
8. El modelo de desarrollo de procesos de modelo mixto también se denomina modelo mixto o metamodelo. Combina varios modelos diferentes en un modelo híbrido que permite que los proyectos evolucionen por el camino más eficiente. Este es el modelo de desarrollo de procesos (o modelo híbrido). De hecho, algunas empresas de desarrollo de software utilizan varios métodos de desarrollo diferentes para formar sus propios modelos híbridos. Comparación de varios modelos Cada organización de desarrollo de software debe elegir un modelo de desarrollo de software que sea adecuado para la organización y debe cambiar con las características específicas del producto que se está desarrollando actualmente, reduciendo así las deficiencias del modelo seleccionado y aprovechando al máximo sus ventajas. La siguiente tabla enumera las ventajas y desventajas de varios modelos comunes. Ventajas y desventajas de varios modelos: Ventajas y desventajas del modelo Los sistemas basados en documentos modelo en cascada pueden no necesariamente satisfacer las necesidades del cliente. El enfoque de los modelos de creación rápida de prototipos en satisfacer las necesidades de los clientes puede conducir a un diseño deficiente del sistema y a ineficiencias, así como a dificultades para mantener los modelos incrementales. La retroalimentación temprana es oportuna y el mantenimiento fácil requiere una arquitectura abierta, que puede estar mal diseñada y ser ineficiente. Los analistas de riesgos basados en el modelo espiral deben tener experiencia y estar bien capacitados.
9.Modelo RUP (modelo iterativo)
El modelo RUP (Rational Unified Process) es un conjunto de modelos de procesos de desarrollo propuestos por Rational Company. Es un proceso de negocio común para objetos. -Ingeniería de software orientada. Describe una serie de procesos de ingeniería de software relacionados que tienen la misma estructura, es decir, el mismo marco de proceso.
RUP proporciona un método estandarizado para asignar tareas y responsabilidades dentro de una organización de desarrollo, con el objetivo de garantizar que el software de alta calidad que satisfaga las necesidades del usuario final se desarrolle dentro de un cronograma y presupuesto predecibles. RUP tiene dos ejes, uno de los cuales es la línea de tiempo, que es dinámico. El otro eje es el eje del flujo de trabajo, que es estático. En el cronograma, RUP se divide en cuatro fases: fase inicial, fase detallada, fase de construcción y fase de lanzamiento. En cada fase se utiliza el concepto de iteración. En el eje del flujo de trabajo, RUP ha diseñado seis flujos de trabajo principales y tres flujos de trabajo de soporte principales. El flujo de trabajo principal incluye: flujo de trabajo de modelado de negocios, flujo de trabajo de requisitos, flujo de trabajo de análisis y diseño, flujo de trabajo de implementación, flujo de trabajo de prueba y flujo de trabajo de lanzamiento. Los flujos de trabajo de soporte principales incluyen: flujos de trabajo ambientales, flujos de trabajo de gestión de proyectos y flujos de trabajo de gestión de cambios y configuración. RUP reúne las mejores prácticas de muchos aspectos del desarrollo de software moderno y proporciona un formato flexible para satisfacer las necesidades de una variedad de proyectos y organizaciones. Como modelo de negocio, tiene pautas y plantillas de proceso muy detalladas. Sin embargo, debido a la complejidad del modelo, el costo de dominarlo es alto. En particular, se imponen mayores exigencias a los directores de proyectos. Tiene las siguientes características: (1) iteración incremental, cada iteración sigue el modelo en cascada, que puede controlar y resolver los riesgos en la etapa inicial; (2) la complejidad del modelo requiere que el director del proyecto tenga sólidas capacidades de gestión;
10.Modelo IPD
El proceso IPD (Desarrollo Integrado de Productos) es un conjunto de procesos integrados de desarrollo de productos propuestos por IBM. Es muy adecuado para proyectos de desarrollo complejos a gran escala, especialmente. Es un proyecto que implica la combinación de software y hardware.
Desde la perspectiva del producto completo, IPD considera de manera integral todos los procesos desde la ingeniería de sistemas, la investigación y el desarrollo (hardware, software, diseño industrial estructural, pruebas, desarrollo de datos, etc.), fabricación, cotización y financiación. , adquisiciones, soporte técnico, etc. Este es un proceso de principio a fin. En el proceso IPD, hay seis etapas (etapa de concepto, etapa de planificación, etapa de desarrollo, etapa de verificación, etapa de lanzamiento y etapa de ciclo de vida) y cuatro puntos de revisión de decisiones (punto de revisión de decisiones de la etapa de concepto, punto de revisión de decisiones de la etapa de planificación, revisión de decisiones de usabilidad). puntos de revisión de decisiones al final de su vida útil) y seis puntos de revisión técnica.
El proceso IPD es un modelo por etapas con una sombra del modelo en cascada. Este modelo descompone un sistema grande y complejo y reduce el riesgo mediante el uso de un proceso integral y complejo. Este modelo utiliza los costos de proceso para mejorar la calidad de todo el producto y ganar participación de mercado hasta cierto punto. Debido a que el proceso no define un mecanismo para revertir el proceso, no es adecuado para proyectos con cambios frecuentes en los requisitos. Y para algunos proyectos pequeños, este proceso no es muy adecuado.