La aplicación de la ingeniería de software en el desarrollo real de proyectos.

Propósito de la escritura

  • Este artículo se utiliza principalmente para registrar la aplicación de la teoría de la ingeniería de software en el proceso de desarrollo de software real,
  • Registre las mejores herramientas utilizadas en el proceso de desarrollo (un trabajador debe primero afilar sus herramientas si quiere hacer bien su trabajo).

texto

1. Etapa de planificación de la demanda

  • [1.1. Determinar el modo de desarrollo]

    • Modelo de desarrollo en cascada, modelo de desarrollo ágil. . .
  • [1.2. Análisis de requisitos]

    • utilizarDiagrama de flujo, diagrama de carriles de natación, diagrama de actividades, diagrama de casos de uso, diagrama de clasesEspere a que el diagrama de clases uml analice los requisitos y el proceso de implementación, se recomiendan herramientas de dibujoStarUML 、 PowerDesign
    • utilizarGráfico de quemado y gráfico de espina de pescadoEvaluar meses-hombre y controlar el tiempo del proyecto. Cada iteración revisará el resumen de la experiencia de la iteración anterior. Luego, planifique la siguiente iteración, asigne responsabilidades a las personas y recomiende sitios web de dibujo en líneaProcessOn
    • Desarrollar especificaciones del proyecto:
      • Especificación de envío de código: Ver Estrategia práctica de gestión de sucursales ,
      • compromiso de especificación: Al ayudar en varios grupos, debe prestar atención a este problema.
      • División de almacén de código:
        • Un almacén es conveniente para controlar la versión, pero es propenso a conflictos.
        • Varios almacenes son convenientes para el desarrollo (el número de conflictos de desarrollo es pequeño), pero la gestión de versiones de varios almacenes tiene problemas y es fácil obtener la versión incorrecta durante la implementación (se requiere una biblioteca de productos para resolver, por ejemplo, el almacén espejo empuja directamente el último a k8s sin operación manual). Evite problemas de producción).
  • [1.3. Estructura del proyecto]

    • Confirmar que se utilizó en el proceso de desarrollo del proyecto.Lenguaje de desarrollo, middlewareY el motivo de la selección.
    • Brindar soluciones para lidiar con lo que se pueda encontrar en el proyecto.Envío repetido, idempotencia, consistencia de caché, consistencia final, hash consistente, entrega de mensajes al 100%, transacción distribuidaY otras cuestiones.

2.Etapa de desarrollo

  • [2.1. Desarrollar especificaciones del proyecto]

    • Equipo unificadoEstilo de codificación
    • Construye unDocumentos del proyecto y especificaciones de almacenamiento, permisos de almacenamiento
  • 【2.2. Proceso de construcción de CI / CD】

    • Se recomienda el código abiertoGit + Jenkins + Gerrit: Git envía código, jenkins realiza una implementación de integración continua, gerrit hace control de acceso y CodeReview.
    • Recomendado para CISonarQube Someone TsunamiRealice un escaneo de código.
    • Recomendado para seguimiento de erroresJira
    • Los proyectos de código abierto deben usarFósidoLleve a cabo una certificación de código abierto para el software utilizado y utilice el escaneo BlackDuck para evaluar el software de código abierto.
    • AzurDevOps
  • [2.3. Construir un almacén]

    • Construye tu propio equipo de proyectoalmacén de maven: Recursos fáciles de publicar y extraer.
    • utilizarhttpdConstruya un catálogo de servicios de software que pertenezca a su propio equipo de proyecto: es conveniente obtener el software de la herramienta a tiempo.
    • Construye tu propio equipo de proyectoBiblioteca de productos: Puede serContenedor espejo almacén o carpeta, Para prepararse para el control de versiones posterior, lanzamiento de producción.
  • [2.4. Herramientas de desarrollo]

    • herramientas de desarrollo:IDEA 、 Eclipse / MyEclipse 、 VisualStudio 、 VsCode
    • Herramienta de conexión a la base de datos:Navicat
    • Ver herramientas:NotePad ++ 、 Más allá de la comparación
    • herramienta ssh:MultiDesk 、 Mobaxterm

3. Etapa de depuración

  • [3.1. Problemas de red]

    • Ocupación portuaria
    • El firewall no está apagado, el puerto no está abierto (ping, telnet)
    • utilizarvolcado tcp + WiresharkCapture paquetes para ver solicitudes específicas
  • [3.2. Problemas del sistema operativo]

    • algunosCodificación del juego de caracteresEn diferentes sistemas operativos, o incluso en el mismo sistema operativo, debido a diferentes configuraciones, anomalías en el funcionamiento, errores confusos
  • [3.3, problema de OOM]

4. Fase de prueba

  • [4.1, prueba unitaria]

    • Escriba casos de prueba de acuerdo con las pautas de prueba para realizar pruebas funcionales en clases y métodos, se debe considerar el códigoCobertura de línea (también llamada cobertura de estado de cuenta), cobertura de decisión (cobertura de sucursal), cobertura de condición, cobertura de ruta
    • Se recomienda utilizar la cobertura de ruta directamente durante la prueba .
  • [4.2. Microprueba de referencia]

    • Utilice Java proporcionadoJMH, Realice pruebas de rendimiento en el método, consulte el uso de JMH para pruebas de microbenchmark para obtener más detalles .
  • [4.3. Prueba de interfaz / rendimiento]

    • utilizarCarteroRealice pruebas funcionales en la interfaz.
    • utilizarJmeter o LoadRunnerRealice pruebas de alta concurrencia en la interfaz.
  • [4.4, prueba SIT]

    • Prueba de integración: cuando se completa el desarrollo de múltiples módulos o el desarrollo incremental,
  • [4.5, prueba simulada]

    • Cuando se escribe la unidad independiente y se requieren pruebas de integración, debido a que es difícil obtener recursos en sentido descendente o no se ha escrito el sentido descendente, entonces paseSimulacro de servidor o YAPI de carteroSimular recursos posteriores para realizar pruebas. Este método de prueba combina libremente interfaces y microservicios. Para obtener más información, consulte: Método de prueba simulado
    • Tenga en cuenta que YAPI también se puede utilizar para la interfaz de desarrollo de gestión de PM.
  • [4.6, prueba UAT]

    • Antes de que el proyecto se pusiera en marcha, se llevó a cabo una gran cantidad de pruebas de usuario en la empresa para descubrir de antemano varios problemas encontrados en la operación real.
  • [4.7. Prueba destructiva]

    • Utilice métodos y procedimientos no prohibidos en el manual de operación del usuario para probar el software. Por favor, Baidu para métodos específicos.
  • [4.8, prueba del mono]

    • Similar a una prueba destructiva, no tiene propósito y es aleatoria como un mono. Generalmente, una secuencia de eventos pseudoaleatoria se genera escribiendo un script para lograr la prueba de estrés de la aplicación en desarrollo, que se usa principalmente en el sistema Android.
  • [4.9, prueba de seguridad]

    • Las pruebas de seguridad son para detectar si el software es seguro y estable, si es fácil obtener permisos, filtrar información del usuario y fallar el programa.
    • El alcance de las pruebas de seguridad es muy amplio y los puntos clave son:Autoridad, información del usuario, seguridad de la base de datos
    • ejemplo:
      • Antes de que un sitio web de admisiones anunciara la lista de admisiones, la lista de admisiones se obtuvo mediante la captura de paquetes.
      • Cuando se cambia el administrador y el usuario de un sitio web, no es necesario volver a iniciar sesión.
  • [4.10. Prueba de regresión y prueba de humo]

5. Etapa de despliegue de producción

  • [5.1. Diagrama de arquitectura física]
    • utilizarVisioDibuje el diagrama de la estructura física del proyecto que se pondrá en producción, de modo que sea fácil comprender la situación general durante la implementación.
    • Escribir en ExcelFormulario de requisitos de integración, La función de la tabla de demanda integrada es buscar otros grupos de colegas en la empresa para resolver cosas más allá de sus capacidades, como solicitar máquinas virtuales, solicitar direcciones IP y configurar una base de datos AlwaysOn.
    • No es suficiente tener una tabla de demanda integrada, se necesita unaHorario, Para programar el tiempo para la asistencia de cada grupo, especialmente el grupo de proyecto con dependencias, utiliceTopologíaPuede ser de mucha ayuda para ti.
  • [5.2, guión del departamento]
    • Muchos procesos de instalación y búsqueda en Linux pueden automatizarse mediante scripts.
    • Instrucciones de uso frecuente:buscar | grep | sed | gato | fuente | chmod | sudo | alquitrán | scp | hacer | empuje
  • [5.3. Servicio del sistema] Realice un servicio del sistema para que el nodo inactivo pueda iniciar el servicio incluso después de reiniciar.
    • Ventana como servicio del sistema: descargarInstsrv.exe y Srvany.exe, combinados con el registrose puede realizar
    • Linux como servicio del sistema: recuerdechkconfig --add | systemctl enabl | serviceinstrucción
  • [5.4, diseño de alta disponibilidad]

6. Etapa de operación y mantenimiento

La etapa de operación y mantenimiento es principalmente para garantizar el SLA del servicio. Los sitios web excelentes proporcionan al menos 4 SLA de 9.

全年拿365天做计算,看看几个9要停机多久时间做能才能达到!
1年 = 365天 = 8760小时
99.9 = 8760 * (100-99.9)% = 8760 * 0.001 = 8.76小时
99.99 = 8760 * 0.0001 = 0.876小时 = 0.876 * 60 = 52.6分钟
99.999 = 8760 * 0.00001 = 0.0876小时 = 0.0876 * 60 = 5.26分钟
  • 【6.1. Seguimiento】 :
    • Monitoreo del sistema:
      • Utilice el comando ping para determinar fácilmente si el nodo está inactivo.
      • instalaciónZabbixPara darse cuenta del sistema del servidor y el nivel de monitoreo de la aplicación se puede lograr configurando la función de alerta por correo electrónico.
    • Monitoreo de aplicaciones:
      • utilizarHAProxyEl puerto de monitoreo realiza un monitoreo simple de la supervivencia de la aplicación.
    • Monitoreo de registros:
    • Sistema de monitoreo distribuido:
      • Prometeo
  • [6, 2 nuevas versiones puestas en producción y reemplazo]
    • Lanzamiento de escala de grises
    • Lanzamiento azul-verde
    • Lanzamiento canario

Supongo que te gusta

Origin blog.csdn.net/ljfirst/article/details/108299857
Recomendado
Clasificación