Logo Passei Direto
Buscar

Qualidade de Software 7

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Engenharia de Software Orientada a Serviços e Engenharia de Proteção
30-08-2025
Instituto de Ciência e Tecnologia - ICET
1
Objetivos da Aula:
Explorar como a Engenharia de Software Orientada a Serviços contribui para a qualidade em arquiteturas distribuídas.
Demonstrar a importância da Engenharia de Proteção na garantia da segurança e resiliência de sistemas críticos.
Apresentar o conceito das boas práticas: Clean Room (Sala Limpa) 
30-08-2025
Instituto de Ciência e Tecnologia - ICET
2
Engenharia de Software Orientada a Serviços (SOSE) e a Qualidade
Arquitetura Orientada a Serviços (SOA):
Modularidade e Reutilização: Como a modularidade facilita a manutenção e a evolução de software com qualidade.
Interoperabilidade: A importância de garantir que os serviços interajam corretamente, independentemente da plataforma, mantendo a qualidade e confiabilidade dos sistemas.
Impacto na Qualidade:
Testabilidade: Como a SOSE permite testar serviços de forma independente, o que melhora a capacidade de encontrar e corrigir defeitos.
Flexibilidade e Escalabilidade: A possibilidade de atualizar ou substituir serviços sem comprometer a qualidade geral do sistema.
Reutilização de Serviços: Impacto na redução de bugs, já que serviços reutilizados são testados e melhorados ao longo do tempo.
Exemplo Prático: Aplicações e-commerce ou sistemas de pagamento que utilizam serviços independentes para autenticação, gestão de produtos e processamento de pagamento, todos assegurando qualidade através da reutilização e testabilidade.
Engenharia de Software Orientada a Serviços e Engenharia de Proteção
30-08-2025
Instituto de Ciência e Tecnologia - ICET
3
Engenharia de Proteção e Qualidade em Sistemas Críticos
O que é Engenharia de Proteção:
Garantir que os sistemas sejam resilientes contra falhas, ataques e desastres.
Importância de projetar sistemas que mantenham sua integridade mesmo em situações adversas.
Proteção em Sistemas de Tempo Real e Críticos:
Sistemas críticos exigem qualidade superior em termos de segurança e confiabilidade (ex: sistemas aeroespaciais, controladores industriais).
A integração de mecanismos de proteção no ciclo de vida do software garante que o sistema mantenha sua qualidade mesmo em condições inesperadas.
Engenharia de Proteção no Desenvolvimento:
Segurança desde o design: Incorporar requisitos de segurança e resiliência desde as fases iniciais do desenvolvimento para evitar vulnerabilidades.
Testes de falha (Stress Testing): Avaliar como o sistema se comporta em cenários de alta carga ou tentativas de ataques.
Mecanismos de Fail-Safe e Redundância: Como projetar sistemas que garantem continuidade de operação com qualidade, mesmo diante de falhas.
Exemplo de Integração:
Sistemas de saúde, como monitoramento de pacientes, que utilizam arquiteturas SOA para modularidade e, ao mesmo tempo, precisam de proteção robusta contra falhas de energia ou ataques cibernéticos.
30-08-2025
Instituto de Ciência e Tecnologia - ICET
4
Integração das Abordagens
COCOMO + SOSE + Engenharia de Proteção: Como essas três abordagens trabalham juntas para assegurar qualidade em todo o ciclo de desenvolvimento de software:
O COCOMO ajuda a prever o esforço e garantir que recursos sejam adequadamente alocados para atividades de garantia de qualidade.
A SOSE facilita a modularidade e a reutilização de serviços, assegurando uma arquitetura flexível e mais fácil de manter com qualidade.
A Engenharia de Proteção assegura que, além de funcionar corretamente, o sistema seja seguro, confiável e resiliente em cenários críticos.
Engenharia de Software Orientada a Serviços e Engenharia de Proteção
30-08-2025
Instituto de Ciência e Tecnologia - ICET
5
Estudos de Caso e Aplicações
A integração de COCOMO, Engenharia de Software Orientada a Serviços (SOSE) e Engenharia de Proteção em um ambiente ágil pode ser aplicada de forma estratégica para garantir uma estimativa precisa, modularidade no desenvolvimento de serviços, e a criação de sistemas resilientes e seguros. Em ambientes ágeis, onde a flexibilidade, entregas contínuas e rápida adaptação são essenciais, essas abordagens podem trabalhar juntas para maximizar a eficiência e a qualidade do software.
Caso de Aplicação: Desenvolvimento de uma Plataforma de Saúde Digital
Contexto
Uma empresa de saúde está desenvolvendo uma plataforma de telemedicina que permite consultas online, acesso a exames laboratoriais, e gerenciamento de prescrições. O sistema deve garantir alta disponibilidade, segurança de dados (já que lida com informações confidenciais dos pacientes) e resiliência a falhas, além de permitir a fácil integração com novos serviços e APIs de terceiros, como laboratórios e farmácias.
A empresa utiliza metodologias ágeis para entregar funcionalidades continuamente, com ciclos curtos de desenvolvimento (sprints) e entregas incrementais.
Engenharia de Software Orientada a Serviços e Engenharia de Proteção
30-08-2025
Instituto de Ciência e Tecnologia - ICET
6
Passo 1: Aplicação do COCOMO para Estimativas no Contexto Ágil
Desafio: No ambiente ágil, onde as entregas são incrementais, é essencial fazer uma estimativa inicial precisa para garantir que os recursos sejam adequadamente alocados e o projeto permaneça no cronograma. No entanto, essas estimativas precisam ser ajustadas de forma iterativa, à medida que novos requisitos e desafios surgem.
Solução: Usar o COCOMO II no início do projeto para estimar o esforço inicial baseado no tamanho previsto da aplicação (em linhas de código ou funcionalidade), ajustando fatores como complexidade do domínio (saúde) e segurança (conformidade com a Lei Geral de Proteção de Dados - LGPD).
Em cada sprint subsequente, as estimativas são refinadas conforme os requisitos mudam ou novas funcionalidades são adicionadas. O COCOMO fornece uma visão de como as mudanças na complexidade e nos fatores de qualidade (como confiabilidade e segurança) podem impactar o esforço adicional.
Exemplo: Estimativa inicial: A equipe estima que o sistema precisará de cerca de 200.000 linhas de código, incluindo interfaces com APIs de terceiros e o módulo de segurança (criptografia de dados e autenticação). Fatores de confiabilidade e segurança recebem um peso maior, o que aumenta o esforço estimado.
Resultado: O COCOMO II indica um esforço inicial de 600 homem-mês para desenvolver a primeira versão com segurança e alta confiabilidade.
Caso de Aplicação: Plataforma de Saúde
30-08-2025
Instituto de Ciência e Tecnologia - ICET
7
Passo 2: Uso de SOSE para Modularidade e Flexibilidade
Desafio: No ambiente ágil, o sistema precisa ser modular para que as funcionalidades possam ser desenvolvidas e integradas independentemente em sprints. A modularidade proporcionada pela Engenharia de Software Orientada a Serviços (SOSE) garante que o sistema possa crescer de forma incremental e flexível, além de permitir que novos serviços sejam integrados facilmente à medida que a plataforma evolui.
Solução: A plataforma de saúde é estruturada em serviços independentes (ex.: serviços de consulta online, armazenamento de exames, prescrição de medicamentos), cada um encapsulado em microserviços.
Cada serviço é projetado para ser reutilizável e independente, o que facilita a implementação incremental dentro do ciclo ágil.
Ferramentas de automação de testes são usadas para garantir a qualidade contínua de cada serviço, permitindo a detecção e correção de defeitos rapidamente, sem impacto em outros módulos.
Exemplo: O serviço de agendamento de consultas é implementado no primeiro sprint, e no sprint seguinte, o serviço de prescrição de medicamentos é adicionado, sem que haja necessidade de modificar o serviço anterior.
Cada serviço tem testes automatizados que garantem sua integridade individual e em conjunto, permitindo a entrega contínua e rápida.
Caso de Aplicação: Plataforma de Saúde
30-08-2025
Instituto de Ciência e Tecnologia - ICET
8
Passo 3: Engenharia de Proteção para Resiliência e Segurança
Desafio:A plataforma de telemedicina deveoperar com alta disponibilidade e ser resiliente a falhas, além de garantir a proteção das informações sensíveis dos pacientes (dados de saúde), que são alvo de regulamentações rigorosas.
Solução:Aplicar práticas da Engenharia de Proteção para garantir que a plataforma seja segura e robusta. .Segurança desde o design: As questões de segurança (criptografia de dados, autenticação multifator) são incorporadas desde os primeiros sprints, utilizando princípios como fail-safe e defense in depth.
.Redundância: O sistema é projetado com redundância, onde serviços críticos como o gerenciamento de dados dos pacientes têm backups e failovers automáticos.
.Testes de falha: Ao final de cada sprint, são realizados testes de stress e falha simulada para garantir que o sistema responda adequadamente sob alta carga ou em caso de falhas parciais (ex.: falha de um microserviço).
Exemplo:Durante o desenvolvimento do serviço de armazenamento de dados de saúde, a equipe implementa criptografia ponta a ponta e backups automáticos. No sprint seguinte, fazem testes de falha simulada, desligando o serviço de banco de dados e verificando se o sistema entra em modo de recuperação (failover).
A plataforma é capaz de continuar operando sem interrupção durante o teste de falha, demonstrando a resiliência dos serviços críticos.
Caso de Aplicação: Plataforma de Saúde
30-08-2025
Instituto de Ciência e Tecnologia - ICET
9
COCOMO para Estimativas e Planejamento Ágil:
Utilizado no início para obter uma visão geral do esforço necessário e no refinamento contínuo ao longo dos sprints. Permite gerenciar expectativas e ajustar o escopo ou os recursos conforme o projeto evolui.
SOSE para Modularidade e Flexibilidade:
Cada sprint implementa serviços independentes e modulares que podem ser integrados ou reutilizados. A modularidade do SOSE garante que a equipe possa entregar pequenas partes funcionais do sistema em cada ciclo ágil, permitindo maior flexibilidade e resposta rápida a mudanças nos requisitos.
Engenharia de Proteção para Segurança e Resiliência:
Elementos críticos como segurança de dados, tolerância a falhas e redundância são incorporados ao longo de todo o ciclo ágil. Isso garante que a qualidade e a proteção sejam continuamente verificadas, sem a necessidade de grandes revisões tardias.
Integração no Ambiente Ágil
30-08-2025
Instituto de Ciência e Tecnologia - ICET
10
Conclusão
Integrar COCOMO, SOSE e Engenharia de Proteção em um ambiente ágil permite que a equipe:
Faça estimativas contínuas e precisas de esforço, ajustando o planejamento conforme o projeto evolui.
Utilize arquitetura modular baseada em serviços que facilita o desenvolvimento incremental e a entrega contínua de funcionalidades, sem impactar negativamente a qualidade do sistema.
Garanta que a segurança e a resiliência sejam parte integrante do design, prevenindo falhas catastróficas e protegendo dados sensíveis desde os primeiros sprints.
Integração no Ambiente Ágil
30-08-2025
Instituto de Ciência e Tecnologia - ICET
11
No contexto de qualidade de software, o termo "sala limpa" (ou clean room, em inglês) refere-se a uma abordagem rigorosa de desenvolvimento de software que busca prevenir a introdução de defeitos no produto ao invés de simplesmente detectá-los e corrigi-los. A metodologia de desenvolvimento de software Cleanroom tem seu nome inspirado em salas limpas utilizadas na fabricação de semicondutores, onde é necessário um ambiente controlado e isento de impurezas.
Qualidade de Software - Sala Limpa
https://p.web.umkc.edu/pgd5ab/cs_451/HW3/hw3.htm
30-08-2025
Instituto de Ciência e Tecnologia - ICET
12
Aqui estão alguns dos princípios-chave da metodologia Cleanroom para qualidade de software:
Prevenção de Erros: O foco é evitar que erros sejam inseridos no código desde o início, aplicando práticas formais e disciplina no processo de desenvolvimento.
Desenvolvimento Formal: A especificação, design e verificação do software são feitos de maneira matemática e formal, utilizando técnicas como provas de correção para garantir que o sistema atenda exatamente às especificações.
Testes Estatísticos: Ao invés de testes exaustivos de funcionalidade, o Cleanroom usa testes estatísticos para estimar a confiabilidade do software, baseados em técnicas de amostragem que buscam assegurar a qualidade geral do sistema.
Inspeção e Revisão: O código é revisado cuidadosamente e inspecionado antes de ser executado pela primeira vez. O objetivo é garantir que o código esteja livre de defeitos antes de ser submetido a testes operacionais.
Ciclos Incrementais: O desenvolvimento é feito de maneira incremental, ou seja, o software é construído e validado em pequenos pedaços, o que permite uma verificação contínua da qualidade e a possibilidade de corrigir possíveis desvios de especificação logo no início.
Qualidade de Software - Sala Limpa
30-08-2025
Instituto de Ciência e Tecnologia - ICET
13
Benefícios da Metodologia Cleanroom:
Maior confiabilidade e qualidade do software, já que a prevenção de defeitos é o foco principal.
Redução de custos a longo prazo, uma vez que menos recursos são gastos com testes e correção de bugs.
Software mais robusto em sistemas críticos, onde falhas podem ser extremamente prejudiciais (ex.: sistemas embarcados, aeronáuticos).
Essa metodologia é mais comum em ambientes onde o nível de confiabilidade exigido é altíssimo, como em sistemas de segurança crítica ou sistemas embarcados.
Qualidade de Software - Sala Limpa
30-08-2025
Instituto de Ciência e Tecnologia - ICET
14
Ambientes ágeis, como Scrum ou Kanban, valorizam a entrega rápida e iterativa de software, com ciclos de feedback contínuos e flexibilidade nas mudanças de requisitos. O desenvolvimento Cleanroom, por outro lado, prioriza a prevenção de defeitos e o desenvolvimento formal, o que, em teoria, poderia desacelerar a entrega de software. No entanto, é possível aplicar algumas ideias do Cleanroom em processos ágeis para melhorar a qualidade sem comprometer a flexibilidade e a velocidade.
Estratégias de Adaptação:
Desenvolvimento Incremental Formalizado: No Cleanroom, o desenvolvimento incremental é uma peça central. Isso se alinha com o desenvolvimento incremental e iterativo do ágil. Em um ciclo ágil, cada iteração (ou sprint) pode ser planejada para entregar incrementos de software que passam por rigorosas inspeções formais antes de ser testados e entregues.
Testes Estatísticos Automatizados: Embora o Cleanroom use testes estatísticos manuais, pode-se integrar práticas de automação ágil para realizar esses testes de maneira mais ágil. Ferramentas automatizadas podem ser configuradas para testar o software continuamente durante o desenvolvimento, com foco na amostragem estatística para garantir que o software atenda a níveis aceitáveis de confiabilidade.
Aplicando Cleanroom em Ambientes Ágeis
30-08-2025
Instituto de Ciência e Tecnologia - ICET
15
Aplicando Cleanroom em Ambientes Ágeis
Revisões de Código Colaborativas: Um aspecto importante do Cleanroom é a inspeção rigorosa do código antes da execução. No ágil, isso pode ser realizado através de revisões de código colaborativas em conjunto com pares ou via pull requests, onde os desenvolvedores revisam as alterações uns dos outros. Isso mantém o espírito do Cleanroom de prevenir defeitos desde o início.
Especificação Formal e Design Colaborativo: Mesmo em ambientes ágeis, onde os requisitos podem mudar frequentemente, os princípios do Cleanroom de especificação formal podem ser úteis. Usar técnicas formais de design para definir requisitos essenciais e imutáveis (por exemplo, em sistemas críticos) pode ser combinado com a flexibilidade ágil em relação a requisitos não críticos.
Foco na Qualidade desde o Início: Um dos pilares do Cleanroom é a qualidade embutida no processo de desenvolvimento. Isso também é um princípio do ágil (com práticas como test-driven development - TDD). Ao adotar práticas de desenvolvimento orientadas a testes ou de desenvolvimento orientado a comportamentos(BDD), é possível incorporar o objetivo de prevenir defeitos enquanto se mantém a entrega rápida.
30-08-2025
Instituto de Ciência e Tecnologia - ICET
16
Aplicando Cleanroom em Ambientes Ágeis
Colaboração e Ciclos Curtos de Feedback: A interação com o cliente e o feedback constante são fundamentais no ágil. Embora o Cleanroom seja mais estruturado, ele pode se beneficiar dessa abordagem ágil de comunicação frequente com stakeholders para garantir que o software atenda às expectativas.
Desafios de Implementação:
Rigor vs. Flexibilidade: Um dos maiores desafios é equilibrar o rigor formal do Cleanroom com a flexibilidade ágil. O tempo necessário para realizar inspeções formais e provas de correção pode ser visto como um obstáculo ao rápido ritmo de iterações no ágil.
Treinamento e Cultura: A introdução de métodos formais requer um nível mais alto de conhecimento matemático e disciplinar, o que pode ser uma barreira em equipes ágeis que estão mais focadas em entregas rápidas e na comunicação frequente com o cliente.
Escalabilidade: Em projetos maiores e mais complexos, integrar os processos formais do Cleanroom com a natureza colaborativa e distribuída do ágil pode ser difícil, especialmente quando há muitas equipes trabalhando em paralelo.
image2.png
image1.png

Mais conteúdos dessa disciplina