Prévia do material em texto
Prof. MSc. Claudio Furquim UNIDADE I Qualidade de Software O que é Qualidade? Qualidade de Software – Fundamentos Fonte: https://i.pinimg.com/236x/02/e2/a5/02e2a54e3a74e93e55301fc55b21dd68.jpg Qualidade é a propriedade que determina a essência de um ser ou coisa, podendo ser tanto boa quanto má essa propriedade. Qualidade de Software – Fundamentos Fonte: https://i.pinimg.com/564x/d4/09/14/d40914ef7ca4e671e6a73259d56f0f51.jpg A qualidade de software é um conceito multifacetado que abrange diversas áreas, desde a concepção inicial do produto de software até sua entrega e manutenção. A qualidade de software é um campo importante na engenharia de software, e diversos conceitos fundamentais contribuem para compreender e melhorar a qualidade dos produtos de software. A qualidade não se limita apenas à ausência de defeitos ou falhas; ela também engloba a usabilidade, eficiência, confiabilidade, e conformidade com padrões e requisitos específicos. Qualidade de Software – Fundamentos Fonte: https://revirnegocios.com.br/wp- content/uploads/2017/03/001-o- que-e-qualidade-e-como- satisfazer-nossos-clientes.jpg Um modelo conceitual conhecido como "ciclo de vida do software" descreve as fases pelas quais um produto de software passa desde o momento em que é desenvolvido até o momento em que é lançado em um ambiente produtivo ou descontinuação. Cada etapa do ciclo de vida do software tem seus próprios objetivos, tarefas e resultados. Ao longo dos anos, vários modelos de ciclo de vida do software foram propostos. Qualidade de Software – Fundamentos Fonte: https://revirnegocios.com.br/wp- content/uploads/2017/03/001-o- que-e-qualidade-e-como- satisfazer-nossos-clientes.jpg Para entender melhor como a qualidade de software é aplicada precisamos entender e relembrar o ciclo de vida do software. Todas as fases do ciclo de vida possuem início e fim definidos, mas podem ocorrer também de forma paralela em muitos projetos, isso irá variar de empresa para empresa e de projeto para projeto. Qualidade de Software – Fundamentos Fonte: Autoria própria. Ciclo de vida do software Concepção Definição de Requisitos Design DeployTestes Implantação Manutenção e Evolução Em qual fase do ciclo de vida do software os programadores implementam funcionalidades do sistema? a) Design. b) Definição de requisitos. c) Implementação. d) Testes. e) Implantação. Interatividade Em qual fase do ciclo de vida do software os programadores implementam funcionalidades do sistema? a) Design. b) Definição de requisitos. c) Implementação. d) Testes. e) Implantação. Resposta A qualidade do software é um conceito multifacetado que abrange diversos aspectos, desde a funcionalidade e desempenho até a segurança e a usabilidade. Para gerenciar e avaliar efetivamente esses diferentes atributos, foram desenvolvidos ao longo dos anos vários modelos de qualidade de software. Esses modelos fornecem um framework estruturado para ajudar as organizações a melhorar seus processos de desenvolvimento e garantir que os produtos finais atendam ou superem as expectativas dos usuários. Qualidade de Software – Modelos de Qualidade de Software Fonte: https://revirnegocios.com.br/wp- content/uploads/2017/03/001-o- que-e-qualidade-e-como- satisfazer-nossos-clientes.jpg A ISO 9126 foi publicada inicialmente em 1991 pela Organização Internacional de Normalização (ISO), intitulada "Engenharia de Software - Qualidade do Produto", é uma norma internacional que estabelece um conjunto de diretrizes para avaliar a qualidade do software e fornece um framework abrangente para avaliar diferentes aspectos da qualidade do software. Qualidade de Software – Modelos de Qualidade de Software Fonte: https://cga.ind.br/cganovo/wp-content/uploads/2021/04/iso9001-297x300.jpg A ISO/IEC 25000, conhecida como SQuaRE (Software Product Quality Requirements and Evaluation), é uma série de normas desenvolvidas para fornecer um conjunto abrangente de diretrizes para avaliação e melhoria da qualidade do software. Ela substituiu a série ISO/IEC 9126, ampliando e refinando os conceitos de qualidade de software. A estrutura da ISO/IEC 25000 compreende quatro partes principais: Requisitos de qualidade do produto, Modelos de qualidade de produto, Medição da qualidade de produto e Gestão da qualidade de produto. Qualidade de Software – Modelos de Qualidade de Software Fonte: https://cga.ind.br/cganovo/wp-content/uploads/2021/04/iso9001-297x300.jpg Modelo do ISO 25000 Qualidade de Software – Modelos de Qualidade de Software Fonte: Autoria própria. Qualidade no produto de Software Planejamento e Requisitos Desenvolvimento e Testes Implantação e Manutenção O modelo de maturidade, como o Capability Maturity Model (CMM) e seu sucessor, o Capability Maturity Model Integration (CMMI), é uma abordagem estruturada para avaliar e aprimorar a capacidade de uma organização em realizar seus processos de forma eficaz e eficiente. Qualidade de Software – Modelos de Qualidade de Software Modelo de Maturidade CMMI Qualidade de Software – Modelos de Qualidade de Software Fonte: Autoria própria. Nível 1 - Inicial Nível 2 - Gerenciado Nível 3 - Definido Nível 4 - Gerenciado Quantitativamente Nível 5 - Otimizado Método 5S A metodologia 5S é uma prática fundamental na engenharia da qualidade que visa criar e manter um ambiente de trabalho organizado, limpo e eficiente. Qualidade de Software – Modelos de Qualidade de Software Programa 5S SEIRI (Senso de utilização) SEITON (Senso de organização) SEISOU (Senso de limpeza) SEIKETSU (Senso de padronização) SHITSUKE (Senso de autodisciplina) Separar e eliminar o desnecessário Organizar para facilitar o uso Manter limpo e arrumado Padronizar ou se utilizar de padrões Disciplina para manter as práticas Fonte: Autoria própria. Six Sigma Six Sigma é uma metodologia de melhoria de processos que visa a aprimorar a qualidade, aumentar a eficiência e reduzir os defeitos em produtos e serviços. Qualidade de Software – Modelos de Qualidade de Software Metodologia Seis Sigma Definir metas claras e as melhorias almejadas. Mensurar: entender 100% como acontece cada processo e suas características. Analisar o sistema atual com objetivo de identificar como eliminar a lacuna entre os números atuais. Incrementar: você vai melhorar o sistema e não realizar mudanças estruturais. Controlar para garantir que as metas alcançadas serão mantidas a longo prazo. 1 2 3 4 5 Fonte: Adaptado de: https://media.licdn.com/dms/image/D4D 22AQF3bwJqkf487Q/feedshare- shrink_2048_1536/0/1721049856036?e =2147483647&v=beta&t=OSErXly7sJfM v8di8szX46aEsje_yuA_zq3xhUDVLw4 TQM – Gestão da Qualidade Total O TQM consiste numa estratégia de administração orientada a criar consciência da qualidade em todos os processos organizacionais. Qualidade de Software – TQM Fonte: https://static.wixstatic.com/media/702 95c_def1fafc070546bd89aa40f7068a 8680~mv2.jpg/v1/fill/w_640,h_640,al_ c,q_85,enc_auto/70295c_def1fafc070 546bd89aa40f7068a8680~mv2.jpg TQM – Gestão da Qualidade Total Qualidade de Software – TQM Estratégia de qualidade Grupos de trabalho Envolvimento de clientes e fornecedores Métodos estatísticos Desempenho de processos Padrões de qualidade Detecção de erros Retificação Sistemas de qualidade Custo da qualidade Solução de problemas Planejamento da qualidade TQM Controle da Qualidade Garantia da Qualidade Inspeção Fonte: Autoria própria. A ISO/IEC 25000 veio depois de qual modelo de qualidade? a) CMMI. b) CMM. c) ISO 9001. d) DEMAIC. e) ISO9126. Interatividade A ISO/IEC 25000 veio depois de qual modelo de qualidade? a) CMMI. b) CMM. c) ISO 9001. d) DEMAIC. e) ISO9126. Resposta Tipos de Sistemas e a Qualidade de Software Os sistemas de informação são aespinha dorsal de quase todas as atividades em organizações modernas. Desde sistemas de gerenciamento de banco de dados até aplicativos móveis, eles desempenham um papel vital na coleta, armazenamento, processamento e distribuição de informações em diversos setores e indústrias. Qualidade de Software – Tipos de Sistemas e a Qualidade Qualidade de Software – Tipos de Sistemas e a Qualidade • Críticos • Embarcados • Tempo real Tipos de Sistemas Tipos de Sistemas: Críticos Os sistemas críticos representam uma categoria de software e hardware cujo funcionamento ininterrupto e correto é considerado vital para as operações que suportam. Esses sistemas são frequentemente associados a setores como aviação, medicina, energia nuclear e controle de tráfego aéreo, onde falhas podem resultar em consequências catastróficas, incluindo perda de vidas humanas, danos ambientais significativos ou prejuízos econômicos de grande escala. Qualidade de Software – Tipos de Sistemas e a Qualidade Fonte: https://s3.static.brasilescola.uol.com.br/be/ 2022/03/torres-de-uma-usina-nuclear.jpg Tipos de Sistemas: Embarcados O termo “embarcado” refere-se ao fato de que esses sistemas são integrados ao hardware do dispositivo em que estão instalados, em oposição a sistemas de propósito geral, como computadores pessoais, onde o software pode ser instalado e modificado livremente. Qualidade de Software – Tipos de Sistemas e a Qualidade Fonte: https://www.lopese giorno.com.br/wp- content/uploads/20 22/07/credit-card- machine- g353cd03d1_1920- 1024x683.jpg Tipos de Sistemas: Embarcados Embora os termos "software embarcado" e "sistema embarcado" estejam relacionados e frequentemente se sobreponham, há uma distinção sutil entre eles: Qualidade de Software – Tipos de Sistemas e a Qualidade Software embarcado Sistema embarcado Refere-se especificamente ao software que é projetado para ser executado em um sistema embarcado. Refere-se ao conjunto completo de hardware e software que formam um dispositivo ou sistema dedicado. Ele é desenvolvido para realizar funções específicas dentro do sistema embarcado. Além do software embarcado, o sistema embarcado inclui todos os componentes físicos (hardware) que compõem o dispositivo. Pode incluir o firmware e drivers de dispositivo, aplicativos específicos ou até mesmo sistemas operacionais especializados para sistemas embarcados. Isso pode incluir processadores, memória, sensores, atuadores e quaisquer outros dispositivos eletrônicos que sejam necessários para o funcionamento do sistema. O software embarcado é uma parte essencial de um sistema embarcado, pois é o que permite que o hardware execute suas funções designadas. O sistema embarcado é projetado para realizar uma função específica ou um conjunto de funções, geralmente sem a capacidade de ser facilmente reprogramado ou reconfigurado para outros fins. Tipos de Sistemas: Tempo Real Os sistemas de tempo real são fundamentais em diversas aplicações críticas, nas quais a execução de tarefas dentro de prazos específicos é crucial para o funcionamento adequado do sistema. Esses sistemas são projetados para responder a eventos ou dados externos em um intervalo de tempo determinado, garantindo assim a eficiência e segurança operacional. Qualidade de Software – Tipos de Sistemas e a Qualidade Fonte: https://i.pinimg.com/originals/01/9a/2d/019a2d16277d159cd2ef1298a4c60ab8.png Um sistema projetado para funcionar em um ônibus espacial pode ser considerado? a) Crítico. b) Real Time. c) Embarcado. d) Near Time. e) Nenhuma das alternativas. Interatividade Um sistema projetado para funcionar em um ônibus espacial pode ser considerado? a) Crítico. b) Real Time. c) Embarcado. d) Near Time. e) Nenhuma das alternativas. Resposta Processos de Testes de Software Os testes de software representam uma etapa essencial no desenvolvimento de sistemas, garantindo que o produto final esteja alinhado com os requisitos especificados e livre de defeitos críticos. A fase de testes não apenas identifica falhas antes do software chegar ao usuário final, mas também assegura a qualidade do produto em termos de funcionalidade, desempenho, segurança e compatibilidade. Qualidade de Software – Testes de Software Processos de Testes de Software: Planejamento O planejamento e a definição de estratégias de testes são etapas fundamentais no ciclo de desenvolvimento de software, estabelecendo um roteiro claro para garantir que o produto final atenda aos padrões de qualidade exigidos. Essa fase envolve a identificação dos tipos de testes mais adequados ao projeto, a alocação de recursos, a definição do cronograma e a escolha das ferramentas necessárias para executar os testes. Qualidade de Software – Testes de Software Processos de Testes de Software Um aspecto fundamental nos testes modernos é a diversificação das técnicas utilizadas: Qualidade de Software – Tipos de Testes Testes unitários focam em verificar a menor parte do software isoladamente Testes de integração asseguram que diferentes módulos ou serviços funcionem conjuntamente Testes de sistema avaliam o comportamento do software como um todo Testes de aceitação validam se o sistema atende às expectativas do cliente ou usuário final Processos de Testes de Software: Automação de testes A automação de testes é um processo essencial que visa automatizar a execução de casos de teste, comparar os resultados esperados com os resultados reais, bem como relatar discrepâncias, sem intervenção humana direta. Essa abordagem acelera o processo de teste e aumenta a precisão e a confiabilidade dos testes realizados. Em vez de realizar testes manualmente, os desenvolvedores e testadores podem criar scripts que simulam interações do usuário e verificam se o software se comporta conforme o esperado. Qualidade de Software – Testes de Software Processos de Testes de Software: Automação de testes Na figura ao lado, está o passo a passo de como funciona o processo de automação de testes. Qualidade de Software – Tipos de Sistemas e a Qualidade Integração com pipeline de CI/CD Análise dos resultados Execução dos testes automatizados Desenvolvimento dos scripts de testes Seleção de ferramenta de automação Identificação dos cenários de testes Processos de Testes de Software: Continuous Integration(CI) e Continuous Delivery(CD) A Continuous Integration (integração contínua) refere-se à prática de integrar o código produzido por diferentes membros da equipe em um repositório compartilhado, de forma frequente e regular. Isso significa que, várias vezes ao dia, o código produzido por diferentes desenvolvedores é combinado em um único código-fonte principal. Esse processo é automatizado e é acompanhado pela execução de testes automatizados para garantir que o código integrado funcione conforme o esperado e não quebre a aplicação existente. Qualidade de Software – Tipos de Sistemas e a Qualidade Processos de Testes de Software: Continuous Integration(CI) e Continuous Delivery(CD) A Continuous Delivery (entrega contínua) vai um passo além, automatizando todo o processo de entrega de software, desde a integração do código até a implantação em um ambiente de produção. Assim, sempre que uma alteração é feita no código e passa com sucesso por todos os testes automatizados, ela está pronta para ser entregue aos usuários finais. Com a entrega contínua, as empresas podem reduzir significativamente o tempo necessário para lançar novas funcionalidades ou correções de bugs, além de garantir uma entrega mais confiável e consistente. Qualidade de Software – Tipos de Sistemas e a Qualidade Processos de Testes de Software: Continuous Integration(CI) e Continuous Delivery(CD) Qualidade de Software – Tipos de Sistemas e a Qualidade Fonte: https://miro.medium.com/v2/resize:fit:720/format:webp/1*G9ctO_oroLJNmXuoly_DvQ.pngQual dos itens abaixo não é um tipo de teste? a) Teste de sistema. b) Teste integrado. c) Teste unitário. d) Teste modular. e) Teste de aceitação. Interatividade Qual dos itens abaixo não é um tipo de teste? a) Teste de sistema. b) Teste integrado. c) Teste unitário. d) Teste modular. e) Teste de aceitação. Resposta BARTIÉ, Alexandre. Garantia da qualidade de software: adquirindo maturidade organizacional. Rio de Janeiro: Elsevier, 2002. PROJECT MANAGEMENT INSTITUTE. Um guia do conhecimento em gerenciamento de projetos (Guia PMBOK®). 5. ed. [S.l.]: Project Management Institute, 2013. ENGHOLM, Hélio Jr. Engenharia de software na prática. São Paulo: Novatec, 2010. DEMING, W. Edwards. Saia da crise. São Paulo: Editora Marques Saraiva, 1990. Referências ATÉ A PRÓXIMA!