Revisión de ingeniería de software 4.7

crisis de software

Definición de crisis de software

Una serie de problemas encontrados en el proceso de desarrollo y mantenimiento de software.

Manifestaciones de una crisis de software

  • Alto costo
  • La calidad del software no está garantizada.
  • progreso incontrolable
  • muy dificil de mantener

La crisis del software contiene dos problemas

  • Cómo desarrollar software para satisfacer requisitos crecientes y cada vez más complejos
  • Cómo mantener un número creciente de productos de software

Causas de la crisis del software.

  • alta complejidad
  • Gran escala
  • Los factores que afectan la productividad y la calidad del software son complejos
  • Falta de orientación y asistencia de principios, principios, métodos y herramientas eficaces del sistema.

La solución técnica a la crisis del software

  • En 1968 se propuso el concepto y pensamiento de la ingeniería de software.
  • Métodos estructurados de desarrollo de software en la década de 1970.
  • Métodos de desarrollo de software orientado a objetos de la década de 1980

Definición de ingeniería de software

La ingeniería de software es una disciplina de ingeniería que estudia el desarrollo y la gestión de software.

Fundamentos de la ingeniería de software

  • Gestionar en estricto apego a los planes para cada etapa del ciclo de vida del software.
  • Adherirse a la revisión de etapa
  • Implementar controles estrictos de productos.
  • Usando técnicas de programación modernas
  • Los miembros del equipo de desarrollo deberían ser menos pero mejores.
  • Los resultados deben ser claramente examinables.
  • Reconocer la necesidad de mejorar continuamente las prácticas de ingeniería de software.

ciclo de vida del software

Proponer el significado del ciclo de vida del software.

  • Reducir la dificultad de todo el proyecto de desarrollo de software.
  • Facilitar la división del trabajo y la cooperación entre diferentes personas.
  • Facilitar la adopción de metodologías y tecnologías de desarrollo avanzadas en todas las etapas.
  • Facilitar la organización y gestión de todo el proceso de desarrollo de software.

Definición de proceso de software.

El proceso de software es el marco para las tareas que deben completarse para crear software de alta calidad, es decir, una serie de pasos para formar un producto de software, incluidos productos intermedios, funciones de recursos, métodos, herramientas, etc.

Modelo de madurez de capacidad de software (CMM)

(1) Nivel inicial
El trabajo está fuera de orden y el plan original
a menudo se abandona durante el proceso del proyecto (2) Nivel repetible
La gestión está institucionalizada, se han establecido sistemas y procedimientos básicos de gestión y el trabajo de gestión tiene reglas a seguir
(3) El nivel definido ha
establecido un sistema de capacitación perfecto y un sistema de revisión de expertos, todas las actividades técnicas y de gestión pueden controlarse
(4) Nivel administrado
Los productos y procesos han establecido objetivos de calidad cuantitativos, se han establecido bases de datos de procesos y se ha realizado el control de productos y procesos del proyecto.
(5) ) Nivel de optimización
Puede concentrarse en mejorar el proceso, adoptando nuevas tecnologías y métodos.

modelo de cascada

características

  • Secuencia y dependencia
  • perspectiva de realización diferida
  • Basado en documentos, cada etapa debe completar los documentos prescritos.
  • Complete la revisión del documento antes del final de cada fase para corregir errores tempranamente.

defecto

  • Falta de flexibilidad, la fase de requisitos requiere todos los requisitos.
  • La versión en ejecución del programa solo se puede obtener en la última etapa del desarrollo del proyecto.
  • El uso de un modelo lineal para organizar el desarrollo de proyectos a menudo genera congestión de personal en el equipo de desarrollo.

Escena aplicable

  • Los requisitos del producto están determinados y las soluciones técnicas están maduras.
  • La fuerza técnica del equipo de desarrollo es débil e inexperta.
  • Los requisitos de calidad son más altos que los requisitos de costos y los requisitos de cronograma.

modelo de creación rápida de prototipos

Prototipo
En el proceso de desarrollo de software, una primera versión funcional del software que refleja algunas características importantes del sistema final.

Clasificación de modelos prototipo.

  • Prototipo desechable
  • prototipo evolutivo

ventaja

  • aprender haciendo
  • mejorar la relación con el cliente
  • Garantizar la exactitud de los requisitos principales.
  • Supere las deficiencias del modelo en cascada y reduzca el riesgo de desarrollo causado por requisitos inciertos.
  • Reducir la documentación del proceso

defecto

  • Es fácil degenerar en hacer cambios mientras se hace.
  • Construir un prototipo cuesta un 10% más
  • El ciclo de iteración del prototipo es difícil de controlar.

Escena aplicable

  • Los requisitos del proyecto no están claros al inicio del proyecto.
  • Desarrollar nuevos productos y verificar la viabilidad técnica.

modelo incremental

Primero complete el desarrollo de un subconjunto del sistema y luego aumente el subconjunto del sistema de acuerdo con los mismos pasos de desarrollo, y así sucesivamente hasta que se cumplan todos los requisitos del sistema.

Increment
Satisface un subconjunto de necesidades del usuario, es un software pequeño pero utilizable que puede completar una determinada función.

inserte la descripción de la imagen aquí

Cada incremento es un componente esencial de un modelo en cascada.

ventaja

  • Los clientes no necesitan esperar hasta que se implemente todo el sistema.
  • Los primeros incrementos se pueden utilizar como prototipos para ganar experiencia con incrementos posteriores.
  • El riesgo general de fracaso del proyecto es relativamente bajo
  • Las arquitecturas de sistemas reciben la mayor cantidad de pruebas

defecto

  • Se requiere que el sistema de software a desarrollar pueda modularizarse.

Escena aplicable

  • La mayoría de los requisitos se especifican en el proyecto, pero los requisitos pueden cambiar.
  • Conocimiento inexacto del mercado y de los usuarios, con la esperanza de ingresar al mercado lo antes posible.

modelo espiral

El modelo en espiral combina las ventajas del modelo en cascada tradicional y el modelo de creación rápida de prototipos, al tiempo que agrega
el modelo en cascada de análisis de riesgos + el modelo de creación rápida de prototipos + análisis de riesgos.

ventaja

  • Cambios dinámicos en los requisitos de soporte.
  • Detección temprana de errores en el software.
  • Análisis de riesgos de soporte

defecto

  • El análisis de riesgos requiere amplios conocimientos y métodos de evaluación de riesgos.

Escena aplicable

  • Grandes sistemas de software complejos con requisitos poco claros o sujetos a cambios.
  • Apoyar métodos de desarrollo orientados a procesos y orientados a objetos, con amplias perspectivas.

Modelo de proceso unificado RUP

Capta las mejores prácticas del desarrollo de software moderno.

definición del problema

¿Cuál es la definición del problema?

  • Establecer el alcance del proyecto, identificando el dominio del problema del nuevo sistema a desarrollar.
  • Partición funcional de proyectos.

Preguntas clave sobre la definición del problema

  • Cómo resolver el problema
  • Describir claramente las cuestiones clave del problema en lenguaje natural.
  • Ejemplo de definición de problema

Informe de definición de problema

inserte la descripción de la imagen aquí

estudio de factibilidad

Premisa del estudio de viabilidad

  • Suponiendo que la definición del problema sea clara
  • ¿Existen soluciones para todos los problemas?

Objetivos del estudio de viabilidad

  • Determinar si un problema tiene una solución factible en el menor tiempo posible y con el menor costo.

Contenido del estudio de viabilidad

  • viabilidad económica
  • viabilidad técnica
  • viabilidad operativa
  • viabilidad social

Características del estudio de viabilidad

  • No para resolver el problema, sino para determinar si tiene solución.
  • 5%-10% del costo total
  • Los estudios de viabilidad generalmente son realizados por analistas de sistemas.

Pasos en el estudio de viabilidad

  • Revisar el tamaño y los objetivos del sistema.
  • Sistemas de investigación actualmente en uso
  • Determinar el modelo lógico de alto nivel del nuevo sistema.
  • redefinir el problema
  • Curso de acción recomendado
  • Borrador del plan de desarrollo del proyecto de software.
  • Redactar un informe de estudio de viabilidad y enviarlo para su revisión.

Diagrama de flujo del sistema

El diagrama de flujo del sistema SFD se utiliza para describir el modelo físico del sistema durante la fase de estudio de viabilidad.

Análisis coste-beneficio

El análisis costo/beneficio analiza si es rentable desarrollar un nuevo sistema desde un punto de vista económico, ayudando así al responsable de la organización cliente a tomar una decisión correcta sobre si invertir en desarrollo de software.

Costo estimado

  • El costo del software son principalmente gastos de personal, por lo tanto, la estimación de costos estima principalmente la carga de trabajo.
  • Calcule la carga de trabajo de desarrollo o mantenimiento de software, luego calcule la proporción de la carga de trabajo de varios tipos de personal, luego calcule el salario total de cada tipo de personal por separado y luego calcule el costo de los gastos de personal.

análisis de la demanda

problema de demanda

  • Los requisitos son la clave para el éxito o el fracaso de un proyecto de software
  • Cuanto antes se encuentre un error en un requisito, antes se corregirá y menos costoso será.
  • Los requisitos son capacidades que el sistema debe tener.
  • Características de los buenos requisitos: inequívocos, completos, consistentes, comprobables, ciertos, rastreables, correctos,

Definición de requisitos

  • Qué necesita un usuario para resolver un problema o lograr un objetivo
  • Condiciones requeridas para que un sistema o componente del sistema satisfaga un contrato, estándar, especificación u otro documento formalmente especificado
  • Documentación que refleje las dos condiciones anteriores.

Naturaleza de la demanda

  • necesario
  • inequívoco
  • mensurable
  • rastreable

Clasificación de necesidades

  • Necesidades del negocio
  • Necesidades del usuario
  • Requisitos funcionales del software
  • requerimientos no funcionales

Necesidades del negocio

  • El punto de partida estratégico para el establecimiento del sistema, expresado como un objetivo de alto nivel.
  • Características que debe tener el sistema
  • Todas las partes involucradas construyen una visión común
  • Limitar el alcance del sistema.

Necesidades del usuario

  • Los requisitos del usuario se refieren a la descripción de las tareas que los usuarios deben completar cuando utilizan el software y cómo completarlas.
  • Por lo general, a partir de la definición de los requisitos comerciales, a través de entrevistas y encuestas a los usuarios, se clasifican los escenarios utilizados por los usuarios para establecer los requisitos desde la perspectiva de los usuarios.
  • Los requisitos del usuario son el resultado de la captura de requisitos.

Requerimientos funcionales

  • Los requisitos funcionales del software se pueden asignar directamente al comportamiento del sistema, definiendo las funciones que deben implementarse en el sistema y describiendo lo que los desarrolladores deben lograr.
  • El proceso de convertir los requisitos del usuario en requisitos funcionales del software es un proceso complejo.

requerimientos no funcionales

  • velocidad
  • capacidad
  • rendimiento

propuesta orientada a objetos

  • La primera etapa: centrada en el cálculo,
    el análisis y diseño se realizan en torno a la eficiencia operativa del programa y los pros y contras del algoritmo.
  • La segunda etapa: el análisis y el diseño centrados en el proceso
    se llevan a cabo en torno al flujo de datos, y el proceso de negocio se simula mediante el flujo de datos. El diseño orientado a procesos se basa en módulos de programa para construir la estructura del software.
    Modelos típicos: diagrama ER, diagrama de flujo de datos, diagrama de transición de estados, tabla de decisiones, árbol de decisiones.

Ventajas de la orientación a objetos

  • Desde la perspectiva de la cognición, el método orientado a objetos se ajusta a las leyes de la comprensión humana del mundo objetivo.
  • El sistema de software desarrollado mediante el método orientado a objetos es fácil de mantener y su arquitectura es fácil de entender, ampliar y modificar.
  • El mecanismo de herencia en el método orientado a objetos apoya firmemente la reutilización del software.

Supongo que te gusta

Origin blog.csdn.net/weixin_47020721/article/details/130005187
Recomendado
Clasificación