Habilidades avançadas em design de arquitetura de sistema·Análise e design de confiabilidade de software

Índice de artigos da série

Habilidades avançadas em design de arquitetura de sistema · Conceitos de arquitetura de software, estilos de arquitetura, ABSD, reutilização de arquitetura, DSSA (1) [Arquiteto de Sistema]
Habilidades avançadas em design de arquitetura de sistema · Atributos de qualidade de sistema e avaliação de arquitetura (2) [Arquiteto de Sistema]
Habilidades avançadas em projeto de arquitetura de sistema · Análise e projeto de confiabilidade de software (3) [Designer de arquitetura de sistema]

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

1. Conceitos básicos de confiabilidade de software★

A confiabilidade do sistema é a capacidade do sistema de completar funções especificadas dentro de um tempo especificado e sob condições ambientais específicas, ou seja, a probabilidade do sistema operar sem falhas. Ou seja, a capacidade básica de um sistema de software de manter as características funcionais do sistema de software diante de erros de aplicação ou de sistema, uso acidental ou incorreto.
A disponibilidade do sistema refere-se à probabilidade de o sistema funcionar conforme necessário em um determinado momento, ou seja, a proporção de tempo em que o sistema pode operar normalmente.

Confiabilidade de software ≠ confiabilidade de hardware , a diferença é:

  • Complexidade , a complexidade do software é maior que a do hardware, e a maioria das falhas vem de falhas de software .
  • Degradação física , a falha de hardware é causada principalmente pela degradação física e não há degradação física no software .
  • Exclusividade, o software é único , cada versão COPY é a mesma e dois hardwares não podem ser exatamente iguais.
  • Ciclo de atualização de versão, o hardware é mais lento e o software é mais rápido .

Descrição quantitativa da confiabilidade do software :
A confiabilidade do software é uma expressão de dados composta por variáveis ​​como condições de uso do software, dentro de um tempo especificado, entrada/saída do sistema, uso do sistema, etc.
(1) Tempo especificado: tempo natural, tempo de execução, tempo de execução, que é a melhor forma de medir a confiabilidade do software. (2)
Probabilidade de falha: desde o momento em que o software começa a rodar, até um certo tempo t, a probabilidade de a falha é uma função aleatória, chamada probabilidade de falha.
(3) Confiabilidade: É a probabilidade de o software não falhar sob condições e dentro de um tempo especificados.
(4) Intensidade de falha: a probabilidade de falha de software por unidade de tempo.
(5) Taxa de falha: também chamada de função de risco ou intensidade de falha condicional, é a probabilidade de falha do sistema de software por unidade de tempo quando o sistema em execução não falha.
(6) Tempo médio sem falhas: o tempo médio até a próxima falha após a execução do software. Reflita a confiabilidade do software de forma mais intuitiva.

Metas de confiabilidade :
A confiabilidade do software refere-se às expectativas do usuário quanto à satisfação do desempenho do software que usa. Pode ser descrito pela confiabilidade, tempo médio de falha e intensidade da falha.

A importância dos testes de confiabilidade de software :
(1) A falha de software pode causar consequências catastróficas.
(2) As falhas de software são responsáveis ​​por uma proporção relativamente elevada de falhas em todo o sistema informático.
(3) Em comparação com a tecnologia de confiabilidade de hardware, a tecnologia de confiabilidade de software é imatura.
(4) Problemas de confiabilidade de software farão com que os custos de software aumentem.
(5) O sistema é altamente dependente de software e tem um impacto crescente nas atividades de produção e na vida social.

O objetivo do teste de confiabilidade de software :
(1) Descobrir defeitos em sistemas de software [análise de requisitos, design de software, codificação do sistema, implementação de teste] (
2) Fornecer base de confiabilidade para o uso e manutenção de software
(3) Confirmar se o software atinge confiabilidade Requisitos quantitativos

O teste generalizado de confiabilidade de software é um teste do sistema de software usando uma série de métodos, como modelagem, teste estatístico, análise e avaliação, a fim de avaliar, em última análise, a confiabilidade do sistema de software.

O teste de confiabilidade de software no sentido estrito refere-se a um tipo de teste realizado em software no ambiente de uso esperado do software, a fim de obter dados de confiabilidade de acordo com casos de teste predeterminados.

2. Modelagem de confiabilidade de software★

O modelo de confiabilidade do software refere-se ao diagrama de blocos de confiabilidade e ao modelo matemático estabelecido para prever ou estimar a confiabilidade do software .

Um modelo de confiabilidade de software geralmente (mas não exclusivamente) consiste nas seguintes partes :

  • Premissas do Modelo
    Um modelo é uma simplificação ou padronização da situação real e sempre contém uma série de suposições, como a seleção de testes para representar o perfil operacional real e a ocorrência independente de diferentes falhas de software.

  • Medição de desempenho
    A saída do modelo de confiabilidade de software é a medição de desempenho, como intensidade de falha, número de defeitos restantes, etc. As medidas de desempenho são geralmente fornecidas como expressões matemáticas em modelos de confiabilidade de software.

  • Método de estimativa de parâmetros
    O valor real de algumas medidas de confiabilidade não pode ser obtido diretamente, como o número de defeitos residuais, neste caso, um determinado método precisa ser utilizado para estimar o valor do parâmetro, determinando indiretamente o valor da medida de confiabilidade.

  • Requisitos de dados
    Um modelo de confiabilidade de software requer certos dados de entrada, nomeadamente dados de confiabilidade de software.

A maioria dos modelos contém três suposições comuns :

  • A hipótese representativa
    refere-se aos dados de confiabilidade do software gerados pelos testes que podem ser usados ​​para prever o comportamento da confiabilidade do software durante a fase de execução.

  • Suposição de Independência
    Esta suposição sustenta que as falhas de software ocorrem independentemente em momentos diferentes, e a ocorrência de uma falha de software não afeta a ocorrência de outra falha de software.

  • Suposição de identidade
    Esta suposição sustenta que as consequências (níveis) de todas as falhas de software são as mesmas, ou seja, o processo de modelagem considera apenas o momento específico da falha de software e não distingue o nível de gravidade da falha de software.

Os métodos de modelagem de confiabilidade de software (classificação de modelo) incluem :

  • O modelo do método semente
    usa tecnologia de amostragem de captura-recaptura para estimar o número de erros no programa, "semeando" intencionalmente algumas "sementes" de erros definidas no programa com antecedência e, em seguida, com base no número original de erros testados e na proporção de erros induzidos encontrados. Estime o número de erros restantes em um programa.
  • O modelo de taxa de falha
    é usado para estudar a taxa de falha de programas
  • O modelo de ajuste de curva
    usa análise de regressão para estudar a complexidade do software, o número de defeitos no programa, a taxa de falhas e o tempo de intervalo de falhas.
  • Modelo de crescimento de confiabilidade
    Este tipo de modelo prevê a melhoria da confiabilidade do software durante o processo de detecção de erros e usa uma função de crescimento para descrever o processo de melhoria do software.
  • O modelo de análise da estrutura do programa
    forma uma rede de análise de confiabilidade baseada em programas, sub-rotinas e suas relações de chamada mútua.
  • O modelo de classificação do domínio de entrada
    seleciona certos "pontos" de amostra no domínio de entrada do software para executar o programa e infere a confiabilidade do software com base na taxa de sucesso/falha da execução do teste com base na probabilidade de uso desses pontos de amostra no ambiente de uso "real".
  • Modelo de método de análise de caminho de execução
    O método de análise é semelhante ao modelo acima: primeiro calcula a probabilidade de execução de cada caminho lógico do programa e a probabilidade de execução do caminho errado no programa e, em seguida, sintetiza a confiabilidade do software.
  • O modelo de processo de Poisson não homogêneo
    usa o número de falhas por unidade de tempo no processo de teste de software como uma variável aleatória de Poisson independente para prever o número cumulativo de falhas em um determinado momento no uso futuro do software.
  • Modelo de processo de Markov
  • O modelo bayesiano
    usa a distribuição pré-teste de taxas de falha e informações atuais de falha de teste para avaliar a confiabilidade do software.

3. Gerenciamento de confiabilidade de software★

Os vários estágios do gerenciamento de confiabilidade de software, conforme mostrado na figura:
Insira a descrição da imagem aqui

Figura 3_1 Estágio de gerenciamento de confiabilidade de software

4. Análise de confiabilidade de software★★★

4.1 Indicadores de confiabilidade

  • Tempo médio entre falhas, MTTF = 1/λ, λ é a taxa de falhas
  • Tempo médio para reparo, MTTR = 1/μ, μ é a taxa de reparo
  • Tempo médio entre falhas, MTBF = MTTR + MTTF
  • Disponibilidade do sistema, MTTF / MTBF = MTTF / (MTTR + MTTF) × 100%
    Insira a descrição da imagem aqui
Figura 4_1 Índice de confiabilidade

Sistema da série 4.2 (confiabilidade)

Insira a descrição da imagem aqui

Figura 4_2 Sistema Série (confiabilidade)

4.3 Sistemas paralelos (confiabilidade)

Insira a descrição da imagem aqui

Figura 4_3 Sistema paralelo (confiabilidade)

4.4 Sistemas híbridos (confiabilidade)

Insira a descrição da imagem aqui

Figura 4_4 Sistema híbrido (confiabilidade)

5. Projeto de confiabilidade de software★★★★

5.1 Principais fatores que afetam a confiabilidade do software

Do ponto de vista técnico, os fatores que afetam a confiabilidade do software incluem: ambiente operacional, escala do software, estrutura interna do software, métodos e ambiente de desenvolvimento de software e investimento em confiabilidade do software .

Insira a descrição da imagem aqui

Figura 5_1 Principais fatores que afetam a confiabilidade do software

5.2 Tecnologia de design de confiabilidade de software

Insira a descrição da imagem aqui

Figura 5_2 Projeto de confiabilidade de software

5.2.1 Tecnologia de projeto tolerante a falhas

5.2.1.1 Projeto redundante – tecnologia de projeto tolerante a falhas

Além de um sistema de software completo, projete um módulo ou sistema com um caminho diferente, algoritmo diferente ou método de implementação diferente como backup, e a parte redundante pode ser substituída quando ocorrer uma falha.

Tanto a programação da versão N quanto o método do bloco de recuperação são baseados na ideia de redundância de design.

5.2.1.2 Tecnologia de design tolerante a falhas de programação da versão N

Ao projetar vários módulos ou versões diferentes, a votação majoritária é implementada nos resultados de operação das mesmas condições iniciais e das mesmas entradas para evitar que a falha de um módulo/versão forneça serviços incorretos.

A programação da versão N é uma tecnologia de proteção contra falhas estáticas que adota uma estratégia de recuperação direta.
Insira a descrição da imagem aqui

Figura 5_3 Programação da versão N

  • Diferente do processo usual de desenvolvimento de software, a programação da versão N adiciona três novos estágios: revisão de especificações de componentes diferentes, confirmação de dissimilaridade e testes consecutivos .

  • Sincronização de programas da versão N, comunicação entre programas da versão N, algoritmos de votação (votação congruente, votação inexata, votação Cosmetie), problemas de comparação consistente e dissimilaridade de dados.

5.2.1.3 Método de bloco de recuperação – tecnologia de design tolerante a falhas

Selecione um conjunto de operações como uma unidade de design tolerante a falhas para transformar blocos de programa comuns em recuperação rápida.

O método de bloco de recuperação é uma tecnologia dinâmica de mascaramento de falhas que adota uma estratégia de recuperação retroativa.

Insira a descrição da imagem aqui

Figura 5_4 Método de bloco de recuperação

  • O projeto deve garantir a independência entre o bloco principal e o bloco de backup , evitar a ocorrência de erros relacionados e minimizar os erros comuns entre o bloco principal e o bloco de backup.

  • A exatidão dos procedimentos de teste de verificação deve ser garantida.

Comparação de programação de versão N e métodos de bloco de recuperação

Comparado Programação da versão N Método de bloco de recuperação
Ambiente operacional de hardware voto Estar sozinho
método de detecção de erros Várias máquinas Procedimentos de teste de validação
estratégia de recuperação recuperação direta recuperação para trás
tempo real bom Diferença
  • Recuperação direta : continuar o cálculo atual, restaurar o sistema a um estado coerente e correto e compensar a incoerência do estado atual.
  • Recuperação para trás : O sistema recupera para o estado correto anterior e continua a execução.
5.2.1.4 Tecnologia de projeto tolerante a falhas de programação defensiva

A programação da versão N e o método do bloco de recuperação são ambos baseados na ideia de redundância de design, o que agrega muito trabalho tanto para programadores quanto para processadores, e suas próprias estruturas trazem alguns problemas e dificuldades, por exemplo, programação multiversão Problemas de erros de correlação e design de testes de verificação na abordagem de bloco de recuperação, etc.

A programação defensiva é um método que pode alcançar tolerância a falhas de software sem usar qualquer tecnologia tradicional de tolerância a falhas. A ideia básica da programação defensiva é incluir código de verificação de erros e erros no programa para lidar com erros e inconsistências no programa. Código de recuperação permite que o programa desfaça o estado de erro e retorne a um estado correto conhecido quando ocorrer um erro .

A estratégia de implementação inclui três aspectos: detecção de erros, estimativa de danos e recuperação de erros.

5.2.2 Detecção de erros e tecnologia de design

  • A tecnologia de detecção de erros é mais barata que a tecnologia de tolerância a falhas e a tecnologia de redundância, mas não pode resolver falhas automaticamente e requer intervenção manual .

  • A tecnologia de detecção de erros se concentra em considerar quatro elementos: objeto de detecção, atraso de detecção, método de implementação e método de processamento.

5.2.3 Tecnologia de projeto de redução de complexidade

Ideias de design para reduzir a complexidade : Com base na garantia das funções do software, simplifique a estrutura do software, encurte a estrutura do software, reduza o comprimento do código do programa, otimize o fluxo de dados do software, reduza a complexidade do software e melhore a confiabilidade do software.

5.2.3 Tecnologia de configuração do sistema

A tecnologia de configuração do sistema pode ser dividida em tecnologia de tolerância a falhas de máquina dupla e tecnologia de cluster de servidor .

5.2.3.1 Tecnologia de tolerância a falhas de máquina dupla - tecnologia de configuração do sistema

A tecnologia tolerante a falhas de máquina dupla é uma solução de aplicativo tolerante a falhas que combina software e hardware. Esta solução é composta por dois servidores, uma matriz de disco compartilhada externa e o software de máquina dupla correspondente.Em um sistema tolerante a falhas de máquina dupla, os dois servidores são geralmente divididos em um sistema mestre e um sistema escravo (sistema de espera). Os dois servidores são mestre-escravo um do outro. Cada servidor possui seu próprio disco de sistema (disco local) onde o sistema operacional e os aplicativos são instalados. Cada servidor está equipado com pelo menos duas placas de rede: uma está conectada à rede para fornecer serviços externos e a outra está conectada a outro servidor para detectar o status de funcionamento da outra parte. Ao mesmo tempo, cada servidor está conectado a uma matriz de disco compartilhada e os dados do usuário são armazenados na matriz de disco compartilhada.Quando um servidor falha, outro servidor toma a iniciativa de assumir o trabalho, garantindo serviços de rede ininterruptos. Os dados de todo o sistema de rede são gerenciados centralmente através da matriz de discos, o que protege bastante a segurança e a confidencialidade dos dados.

O sistema tolerante a falhas de máquina dupla pode ter três modos de trabalho diferentes de acordo com os diferentes métodos de trabalho dos dois servidores, ou seja, modo de espera a quente de máquina dupla, modo de backup mútuo de máquina dupla e modo duplex de máquina dupla .

O método heartbeat é usado para garantir a conexão entre o sistema principal e o sistema de backup .

  • Modo de espera ativa de servidor duplo - (um funcionando, um de backup)
    Em circunstâncias normais, um servidor está no status de funcionamento (sistema principal) e o outro servidor está no status de preparação de monitoramento (sistema de espera). Se uma matriz de disco compartilhada não for usada, os dados do usuário serão gravados em dois servidores ao mesmo tempo para garantir a sincronização instantânea dos dados. Quando o sistema principal falha, o sistema de backup é ativado por meio de software de máquina dupla para garantir que o aplicativo seja totalmente restaurado ao uso normal em um curto espaço de tempo. Depois que o sistema principal for reparado, você poderá reconectar-se ao sistema e recuperar seus aplicativos.
    O modo de backup a quente de máquina dupla é um modo amplamente utilizado atualmente.As aplicações típicas incluem servidores de capital de títulos ou servidores de cotação de mercado.
    A principal desvantagem do modo hot standby de máquina dupla é que o sistema standby fica em estado de backup por um longo tempo, resultando em certo desperdício de recursos computacionais.

  • Modo de backup mútuo de máquina dupla - (dois servidores executam aplicativos relativamente independentes e servem como backup um para o outro).
    Ambos os servidores estão em status de funcionamento, fornecendo diferentes serviços de aplicativos para clientes front-end e detectando as condições operacionais um do outro. Ou seja, ambos os servidores estão rodando ao mesmo tempo, mas cada um está configurado como um sistema de backup. Quando um servidor falha, outro servidor pode assumir a aplicação do servidor com falha em um curto espaço de tempo, garantindo assim a continuidade da aplicação. A principal desvantagem do modo de backup mútuo de duas máquinas são os requisitos de desempenho relativamente altos do servidor.

  • Modo duplex de máquina dupla - (Dois servidores executam o mesmo aplicativo ao mesmo tempo e servem como backup um para o outro) O
    modo duplex de máquina dupla é uma forma de tecnologia de cluster. Ambos os servidores estão funcionando e fornecem o mesmo serviço para front-end clientes ao mesmo tempo.serviços de aplicação para garantir o desempenho de todo o sistema e alcançar balanceamento de carga e backup mútuo.

5.2.3.2 Tecnologia de configuração de sistema de tecnologia de cluster de servidor

A tecnologia de cluster consiste em organizar vários computadores para trabalharem juntos. É uma tecnologia que melhora a disponibilidade e a confiabilidade do sistema. Em um sistema de cluster, cada computador é responsável por algumas tarefas de computação e tarefas de tolerância a falhas. Quando um dos computadores falha, o sistema usa software de cluster para isolar o computador do sistema e completa isso através do mecanismo de transferência de carga entre computadores. Novo compartilhamento de carga enquanto alerta os administradores do sistema. O sistema cluster alcança alta disponibilidade e confiabilidade do sistema por meio de integração funcional e transição de falhas.

Os servidores de nó no cluster se comunicam entre si por meio da LAN interna. Se um servidor de nó falhar, o aplicativo em execução neste servidor será automaticamente assumido por outro servidor de nó.

  • Cluster de computação de alto desempenho
    refere-se à tecnologia de cluster de computadores com o objetivo de melhorar as capacidades de computação científica.É um método de implementação de clusters de computação paralelos. A computação paralela refere-se a um método de dividir um programa aplicativo em várias partes que podem ser executadas em paralelo e especificá-las para execução em vários processadores.

  • Cluster de balanceamento de carga
    Um cluster de balanceamento de carga distribui a carga entre vários nós de acordo com uma determinada estratégia (algoritmo). O balanceamento de carga é baseado na estrutura de rede existente, o que fornece uma maneira barata e eficaz de expandir a largura de banda do servidor, aumentar o rendimento e melhorar os recursos de processamento de dados. O balanceamento de carga é um tipo de balanceamento dinâmico que usa algumas ferramentas para analisar pacotes de dados em tempo real, compreender o status do fluxo de dados na rede e alocar tarefas de maneira razoável. As tecnologias de implementação de balanceamento de carga
    mais comumente usadasincluem principalmente o seguinte:1) Balanceamento de carga baseado em software específico (camada de aplicação) : Muitos protocolos de rede suportam funções de redirecionamento, por exemplo, com base no serviço de redirecionamento HTTP. O princípio principal é que o servidor use Diretiva HTTP Redirect, que realoca um cliente para outro local. O servidor retorna uma resposta de redirecionamento em vez de retornar o objeto solicitado. O cliente confirma o novo endereço e reenvia a solicitação para obter balanceamento de carga. 2) O balanceamento de carga baseado em DNS pertence à tecnologia de balanceamento de carga da camada de transporte : seu princípio principal é configurar vários endereços para o mesmo nome de host no servidor DNS. Ao responder às consultas DNS, o servidor DNS responderá a cada consulta com o nome do host no arquivo DNS. Os endereços IP registrados retornam diferentes resultados de análise em ordem, orientando o acesso do cliente a diferentes nós, permitindo que diferentes clientes acessem diferentes nós, atingindo assim o objetivo de balanceamento de carga. 3) Balanceamento de carga baseado em NAT : mapeia um endereço IP externo para vários endereços IP internos, converte dinamicamente cada solicitação de conexão no endereço de um nó interno e direciona a solicitação de conexão externa para o nó onde o endereço é convertido. propósito de balanceamento de carga. 4) Balanceamento de carga de proxy reverso : encaminha dinamicamente solicitações de conexão da Internet para vários nós na rede interna para processamento como proxy reverso, alcançando assim o balanceamento de carga. 5)




    Balanceamento de carga híbrido

  • Cluster de alta disponibilidade
    Em um sistema de cluster de alta disponibilidade, vários computadores trabalham juntos, cada um executando um ou vários serviços, e cada um define um ou mais computadores de backup para o serviço. Quando um computador falha, o computador de backup assume imediatamente o controle do aplicativo do computador com falha e continua a fornecer serviços aos usuários front-end.

6. Teste de confiabilidade de software★

  • O teste de confiabilidade de software inclui:
    determinação de metas de confiabilidade, desenvolvimento de perfis operacionais, design de casos de teste, implementação de teste, análise de resultados de teste, etc.

  • Etapas de teste:
    Definir o perfil de operação do software (modelar o comportamento de uso do software) => Projetar casos de teste de confiabilidade => Implementar testes de confiabilidade.

7. Avaliação de confiabilidade de software★

  • A avaliação da confiabilidade do software possui três processos:
    seleção do modelo de confiabilidade, coleta de dados de confiabilidade e avaliação e previsão da confiabilidade.

  • Fatores a serem considerados ao selecionar um modelo de confiabilidade:
    a aplicabilidade das suposições do modelo, a capacidade e a qualidade das previsões, se o valor de saída do modelo pode atender às necessidades de avaliação de confiabilidade e a facilidade de uso do modelo.

  • Coleta de dados de confiabilidade:
    Os dados de confiabilidade referem-se principalmente a dados de falhas de software, que são a base para a avaliação de confiabilidade do software, sendo coletados principalmente durante os estágios de teste e implementação de software. Soluções que devem ser adotadas: determinar antecipadamente o modelo de confiabilidade a ser usado, formular um plano de coleta de dados de confiabilidade altamente implementável, prestar atenção à organização e análise dos dados de teste de software e fazer uso total do banco de dados para completar o armazenamento e estatísticas de dados de confiabilidade. analisar.

  • Avaliação e previsão de confiabilidade:
    Determine se a meta de confiabilidade foi alcançada; se não puder ser alcançada, quanto mais investimento será feito; depois que o sistema de software for colocado em operação real por um ano ou um determinado período de tempo, após a manutenção, atualizações e modificações, se o software pode atender à entrega ou parcial O nível de confiabilidade entregue aos usuários. Métodos auxiliares: análise gráfica de dados de falha, técnicas heurísticas de análise de dados.

Acho que você gosta

Origin blog.csdn.net/weixin_30197685/article/details/132125234
Recomendado
Clasificación