Prévia do material em texto
Prof. MSc. Claudio Furquim UNIDADE III Qualidade de Software A engenharia de software é uma área que se concentra no desenvolvimento de sistemas de software de alta qualidade. Nesse caso, a qualidade do software não se limita ao seu desempenho e funcionalidade, mas também em relação à confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade. A engenharia de software emprega uma abordagem sistemática, disciplinada e quantificável para alcançar esses objetivos de qualidade. Qualidade de Software – Engenharia de Software e Qualidade Em engenharia de software, o gerenciamento da qualidade é fundamental para o desenvolvimento de produtos digitais que atendam às necessidades dos usuários e superem suas expectativas. Qualidade de Software – Engenharia de Software e Qualidade O ciclo PDCA é um processo contínuo; após a etapa "Agir", retorna-se à fase de "Planejar" para iniciar uma nova iteração do ciclo. Cada ciclo novo propicia a aprendizagem contínua, ajustando e aprimorando os processos no decorrer do tempo. Qualidade de Software – Ciclo de melhoria contínua • Objetivo: Implementar o plano elaborado na fase de planejamento. • Objetivo: Avaliar os resultados da implementação para comparar com as metas estabelecidas. • Objetivo: Estabelecer metas e identificar maneiras de alcançá-las. • Objetivo: Tomar ações corretivas e/ou preventivas com base na etapa de verificação. A P DC A aplicação do PDCA no desenvolvimento de software promove a melhoria contínua, bem como a eficiência e a eficácia nos processos de criação de software. Veja como o ciclo PDCA se aplica ao desenvolvimento de software: Planejar (Plan): Objetivo: estabelecer metas e definir as atividades necessárias para atingir essas metas. Definição dos requisitos do projeto. Estabelecimento de metas de qualidade e prazos. Planejamento das atividades de desenvolvimento e teste. Qualidade de Software – Ciclo de melhoria contínua A aplicação do PDCA no desenvolvimento de software promove a melhoria contínua, bem como a eficiência e a eficácia nos processos de criação de software. Veja como o ciclo PDCA se aplica ao desenvolvimento de software: Executar (Do): Objetivo: implementar o plano elaborado na fase de planejamento. Codificação do software. Execução de testes unitários e de integração. Implementação de funcionalidades de acordo com o plano. Qualidade de Software – Ciclo de melhoria contínua A aplicação do PDCA no desenvolvimento de software promove a melhoria contínua, bem como a eficiência e a eficácia nos processos de criação de software. Veja como o ciclo PDCA se aplica ao desenvolvimento de software: Verificar (Check): Objetivo: avaliar os resultados da implementação para comparar com as metas estabelecidas. Realização de testes de sistema e aceitação. Verificação da conformidade com os requisitos. Análise de métricas de qualidade e desempenho. Qualidade de Software – Ciclo de melhoria contínua A aplicação do PDCA no desenvolvimento de software promove a melhoria contínua, bem como a eficiência e a eficácia nos processos de criação de software. Veja como o ciclo PDCA se aplica ao desenvolvimento de software: Agir (Act): Objetivo: tomar ações corretivas e/ou preventivas com base na avaliação realizada na etapa de verificação. Correção de bugs identificados nos testes. Melhoria contínua de processos com base nos resultados. Atualização do plano de desenvolvimento conforme necessário. Qualidade de Software – Ciclo de melhoria contínua Quando falamos em “realizar a análise de métricas de qualidade e desempenho”, a qual item estamos nos referindo? a) Planejamento (Plan). b) Execução (Do). c) Verificação (Check). d) Agir (Act). e) Nenhuma das anteriores está correta. Interatividade Quando falamos em “realizar a análise de métricas de qualidade e desempenho”, a qual item estamos nos referindo? a) Planejamento (Plan). b) Execução (Do). c) Verificação (Check). d) Agir (Act). e) Nenhuma das anteriores está correta. Resposta O gerenciamento de configuração desempenha um papel crucial na gestão da qualidade do software ao estabelecer processos para a revisão e a aprovação das mudanças propostas antes que elas sejam implementadas. O processo de gerenciamento de configuração é uma metodologia estruturada que visa assegurar a integridade e a estabilidade do software durante seu ciclo de vida. Desse modo, ele abrange várias atividades críticas, como a identificação de configurações, o controle de mudanças, o registro e o relatório do estado das configurações, e a auditoria da configuração. Qualidade de Software – Gerenciamento da configuração Identificação da Configuração Controle da Configuração Status da Configuração Auditoria de Configuração Identificação da Configuração: é a primeira etapa do gerenciamento da configuração e é crucial para estabelecer uma base sólida para todo o processo. Nessa etapa, o analista deve documentar cada item de software e hardware que será utilizado no projeto do software. Qualidade de Software – Gerenciamento da configuração Identificação da Configuração Controle da Configuração Status da Configuração Auditoria de Configuração Controle da Configuração: envolve a avaliação e aprovação de cada pedido de mudança, seja no software ou no hardware, para garantir que todas as alterações sejam controladas. Incluindo o versionamento do código-fonte. Qualidade de Software – Gerenciamento da configuração Identificação da Configuração Controle da Configuração Status da Configuração Auditoria de Configuração Status da Configuração: monitora e registra o estado atual e suas mudanças dos itens de configurações (ICs) ao longo do tempo. Isso ajuda a manter um histórico preciso e atualizado das configurações. Exemplo: Qualidade de Software – Gerenciamento da configuração Descrição do IC Versão Localização Responsável Observação .Net Framework 4.5 Servidor Alpha Gerência de Infra Foi agendada uma atualização Identificação da Configuração Controle da Configuração Status da Configuração Auditoria de Configuração Ferramentas e práticas para auxiliar no gerenciamento de configuração. Ferramentas de gerenciamento de mudanças de software. Qualidade de Software – Gerenciamento da configuração Fonte: https://enotas.com .br/blog/wp- content/uploads/2 021/02/GitHub.jpg Fonte: https://www.visualsvn.com/ima ges/opengraph-image.png Ferramentas e práticas para auxiliar no gerenciamento de configuração. Ferramentas de deploy em ambiente. Qualidade de Software – Gerenciamento da configuração Fonte: https://www.phpro.be/u ploads/media/sulu- 400x400/09/469- jenkins%404x.png?v=1- 0?62b3251db82aa489a 7ee194a74cc6fb1 Fonte: https://logowik.com/content/uploads/images/bamboo3477.jpg Ferramentas e práticas para auxiliar no gerenciamento de configuração. Ferramentas de fluxo de trabalho. Qualidade de Software – Gerenciamento da configuração Fonte: https://portalcliente.pixeon.com/im ages/atlassian-jira-logo-large.png Fonte: https://media.publit.io/file/q_80/tr ello-logo-produtivamente.png Qual a utilização da ferramenta GitHub? a) Realizar a gestão do código-fonte. b) Realizar o desenvolvimento do software. c) Realizar o deploy do software em ambiente apropriado. d) Realizar a checagem das configurações do hardware. e) Realizar a comunicação do fluxo de trabalho. Interatividade Qual a utilização da ferramenta GitHub? a) Realizar a gestão do código-fonte. b) Realizar o desenvolvimento do software. c) Realizar o deploy do software em ambiente apropriado. d) Realizar a checagem das configurações do hardware. e) Realizar a comunicação do fluxo de trabalho. Resposta A construção e a manutenção da cultura da qualidade dentro das organizações transcende as metodologias e ferramentas específicas, focando então nas pessoasque são os verdadeiros agentes da qualidade. Iniciativas como treinamentos regulares, workshops sobre melhores práticas e reconhecimento dos colaboradores que contribuem significativamente para o avanço da qualidade são fundamentais. Empresas como o Google têm liderado pelo exemplo, criando ambientes onde a inovação é incentivada, mas sem perder o foco na excelência do produto final. Qualidade de Software – Cultura da Qualidade Manutenção Corretiva A manutenção corretiva é essencialmente reativa, focada na correção de defeitos identificados no software após sua implantação. Esse tipo de manutenção é crucial para a estabilidade e a confiabilidade do sistema, pois possibilita que falhas inesperadas sejam prontamente resolvidas. Assim, uma abordagem eficaz para a manutenção corretiva abarca várias etapas, a começar pela coleta e análise detalhada dos relatórios de erro fornecidos pelos usuários ou sistemas de monitoramento automatizados. Qualidade de Software – Manutenção e Evolução do Software Manutenção Corretiva Qualidade de Software – Manutenção e Evolução do Software Tipos de Manutenção Corretiva Imediata Agendada Manutenção Adaptativa A manutenção adaptativa lida com as alterações necessárias para fazer o software operar eficientemente em um ambiente modificado ou atualizado. A partir disso, é possível encontrar atualizações no sistema operacional, mudanças nas políticas externas ou evoluções tecnológicas que exijam ajustes no software para manter sua funcionalidade e desempenho. Qualidade de Software – Manutenção e Evolução do Software Manutenção Adaptativa Qualidade de Software – Manutenção e Evolução do Software M a n u te n ç ã o a d a p ta ti v a Novas regras de negócio Compatibilidade de ambiente Integração com novos sistemas Melhoria do desempenho Manutenção Preventiva A manutenção preventiva ajuda a evitar problemas futuros de software aperfeiçoando o código e a estrutura do sistema antes que eles ocorram. Esta abordagem proativa de manutenção pode reduzir significativamente os custos no longo prazo, pois evita os custosos reparos de emergência e evita interrupções imprevistas. Qualidade de Software – Manutenção e Evolução do Software Manutenção Adaptativa Qualidade de Software – Manutenção e Evolução do Software M a n u te n ç ã o a d a p ta ti v a Novas regras de negócio Compatibilidade de ambiente Integração com novos sistemas Melhoria do desempenho Quando dizemos que estamos realizando uma manutenção para evitar problemas futuros, estamos querendo realizar qual tipo de manutenção? a) Evolutiva. b) Preventiva. c) Corretiva. d) Adaptativa. e) Nenhuma das anteriores está correta. Interatividade Quando dizemos que estamos realizando uma manutenção para evitar problemas futuros, estamos querendo realizar qual tipo de manutenção? a) Evolutiva. b) Preventiva. c) Corretiva. d) Adaptativa. e) Nenhuma das anteriores está correta. Resposta Outra boa prática que vem revolucionando a indústria de construção de software e, por consequência, alterando a forma como gerenciamos a qualidade de nossos softwares são as metodologias ágeis. Qualidade de Software – Gestão ágil de projetos de desenvolvimento de software Fonte: https://fixeconsulting.com/wp-content/uploads/2019/02/Como-aplicar-agile-no-seu-dia-a-dia.jpg Iremos abordar os dois métodos mais utilizados no mercado atualmente: Qualidade de Software – Gestão ágil de projetos de desenvolvimento de software Product Owner Scrum Master Sprint Planning Product Backlog Sprint Backlog Team Sprint Daily Scrum Meeting Product Increment Fonte: https://storage. googleapis.co m/medium- feed.appspot.c om/images%2 F9353691196 %2F37c57ce8 64337-Como- escolher- Scrum-versus- Kanban.jpg Fonte: Adaptado de: https://miro.com/api/v1/boards/uXjVMR7GF64%3 D/resources/3458764514751560612/files/created O primeiro deles é o Kanban A principal vantagem do Kanban é proporcionar uma visão clara do fluxo de trabalho atual, com a possibilidade de identificar gargalos e priorizar tarefas com maior eficiência. Ao contrário do Scrum, não há sprints; o trabalho flui continuamente de acordo com o andamento da equipe. Isso torna o Kanban particularmente adequado para ambientes onde os requisitos mudam frequentemente, ou para projetos com demandas imprevisíveis. Qualidade de Software – Gestão ágil de projetos de desenvolvimento de software Fonte: https://storage.googleapi s.com/medium- feed.appspot.com/image s%2F9353691196%2F37 c57ce864337-Como- escolher-Scrum-versus- Kanban.jpg O segundo é o Scrum O Scrum é uma das metodologias ágeis mais populares no desenvolvimento de software, caracterizada por sua estrutura iterativa e incremental. A base do Scrum é o sprint, um período fixo (geralmente de duas a quatro semanas) durante o qual uma equipe trabalha para completar um conjunto específico de funcionalidades. Qualidade de Software – Gestão ágil de projetos de desenvolvimento de software Manifesto Ágil Indivíduos e interações mais que processos e ferramentas Responder a mudanças mais que seguir um plano Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos 1 2 34 Fonte: Adaptado de: https://www.itepconsultoria.com/wp- content/uploads/2021/07/1_T2OGm Pz1uzTgIbk4AoamNg.png Abaixo temos um diagrama do framework Scrum, seus papéis e processos. Vamos falar um pouco sobre eles. Qualidade de Software – Gestão ágil de projetos de desenvolvimento de software Product Owner Scrum Master Sprint Planning Product Backlog Sprint Backlog Team Sprint Daily Scrum Meeting Product Increment Fonte: Adaptado de: https://miro.com/api/v1/boards/uXjVMR7GF64%3 D/resources/3458764514751560612/files/created Mas quando usar o Kanban ou o Scrum? Scrum: ideal para projetos com requisitos que podem mudar rapidamente e onde é importante ter entregas regulares e incrementais. Kanban: ideal para equipes que precisam de flexibilidade e um fluxo contínuo de trabalho, como em operações de manutenção e suporte. Ambas as metodologias podem ser combinadas em uma abordagem chamada de Scrumban, que aproveita a estrutura do Scrum e a flexibilidade do Kanban. Qualidade de Software – Gestão ágil de projetos de desenvolvimento de software Fonte: https://fixeconsulting.com/wp-content/uploads/2019/02/Como-aplicar-agile-no-seu-dia-a-dia.jpg Quando precisamos utilizar um fluxo contínuo de trabalhos, estamos falando de qual metodologia? a) Scrumban. b) Scrum. c) CMMI. d) Kanban. e) Nenhuma das anteriores está correta. Interatividade Quando precisamos utilizar um fluxo contínuo de trabalhos, estamos falando de qual metodologia? a) Scrumban. b) Scrum. c) CMMI. d) Kanban. e) Nenhuma das anteriores está correta. Resposta BARTIÉ, Alexandre. Garantia da qualidade de software: adquirindo maturidade organizacional. Rio de Janeiro: Elsevier, 2002. DEMING, W. Edwards. Saia da crise. São Paulo: Editora Marques Saraiva, 1990. ENGHOLM, Hélio Jr. Engenharia de software na prática. São Paulo: Novatec, 2010. PROJECT MANAGEMENT INSTITUTE. Um guia do conhecimento em gerenciamento de projetos (Guia PMBOK®). 5. ed. [S.l.]: Project Management Institute, 2013. Referências ATÉ A PRÓXIMA!