Evolução e Gerenciamento de Qualidade de Software
Classificado em Tecnologia
Escrito em em português com um tamanho de 8,81 KB
Evolução de Software
Este documento aborda a evolução de software, explicando por que as mudanças são inevitáveis para que os sistemas de software permaneçam úteis. Discute a manutenção de software, seus fatores de custo e os processos envolvidos na evolução. Além disso, propõe uma abordagem para avaliação de estratégias de evolução para sistemas legados.
Dinâmica da Evolução de Programas
A dinâmica da evolução de programas é o estudo dos processos de mudança de sistema. Após muitos estudos empíricos, Lehman e Belady propuseram uma série de ‘leis’ que se aplicavam a todos os sistemas à medida que evoluíam. No entanto, estas são mais observações do que leis, aplicáveis principalmente a sistemas de grande porte desenvolvidos por grandes organizações, e talvez menos em outros contextos.
Manutenção de Software
A manutenção de software é a modificação de um programa após ter sido colocado em uso. Normalmente, não envolve mudanças consideráveis na arquitetura do sistema. As mudanças são implementadas pela modificação de componentes existentes e pela adição de novos componentes ao sistema.
Tipos de Manutenção
- Manutenção para reparar defeitos de software.
- Manutenção para adaptar o software a um ambiente operacional diferente.
- Manutenção para adicionar funcionalidade ao sistema ou modificá-lo.
Fatores de Custo de Manutenção
- Estabilidade da equipe.
- Responsabilidade contratual.
- Habilidade do pessoal.
- Idade e estrutura do programa.
Previsão de Manutenção
A previsão de manutenção está relacionada à avaliação de quais partes do sistema podem causar problemas e ter altos custos de manutenção.
Métricas de Complexidade
As previsões de facilidade de manutenção podem ser feitas pela avaliação da complexidade dos componentes do sistema. Estudos mostraram que a maior parte do esforço de manutenção é despendida sobre um número relativamente pequeno de componentes do sistema.
A complexidade depende:
- Da complexidade das estruturas de controle.
- Da complexidade das estruturas de dados.
- Do objeto, do método (procedimento) e do tamanho do módulo.
Categorias de Sistemas Legados
- Baixa qualidade, baixo valor de mercado: Esses sistemas devem ser descartados.
- Baixa qualidade, alto valor de mercado: Esses sistemas contribuem de maneira importante para a empresa, mas sua manutenção é dispendiosa. Devem sofrer reengenharia ou ser substituídos caso um sistema adequado esteja disponível.
- Alta qualidade, baixo valor de mercado: Substituir com COTS (Commercial Off-The-Shelf), abandonar completamente ou manter.
- Alta qualidade, alto valor de mercado: Esses sistemas devem continuar em operação usando manutenção normal de sistema.
Pontos-Chave sobre Evolução de Software
- Desenvolvimento e evolução de software devem ser um processo iterativo único.
- As leis de Lehman descrevem uma série de percepções sobre a evolução de sistemas.
- Três tipos de manutenção são: correção de defeitos, modificação de software para um novo ambiente e implementação de novos requisitos.
- Para sistemas sob encomenda, os custos de manutenção geralmente excedem os custos de desenvolvimento.
- O processo de evolução é dirigido por solicitações de mudanças a partir dos stakeholders do sistema.
- A reengenharia de software está relacionada à reestruturação e redocumentação de software para torná-lo mais fácil de mudar.
- O valor de negócio de um sistema legado e sua qualidade devem determinar a estratégia de evolução que será usada.
Gerenciamento de Qualidade de Software
Esta seção apresenta o processo de gerenciamento de qualidade e as atividades centrais da garantia de qualidade. Explica a importância dos padrões na qualidade de software, o conceito de métricas de qualidade (predição e controle), e como a medição pode ser usada na avaliação de qualidade de software, bem como suas limitações.
Gerenciamento de Qualidade de Software
O gerenciamento de qualidade de software dedica-se a assegurar que o nível requerido de qualidade seja atingido em um produto de software. Envolve a definição de padrões e procedimentos apropriados de qualidade e a garantia de que sejam seguidos. Deve objetivar o desenvolvimento de uma 'cultura de qualidade' onde a qualidade é vista como uma responsabilidade de todos.
O que é Qualidade?
Qualidade, de maneira simplista, significa que um produto deve atender à sua especificação. Isso é problemático para os sistemas de software.
Atividades de Gerenciamento de Qualidade
As principais atividades de gerenciamento de qualidade incluem:
- Garantia de qualidade.
- Planejamento de qualidade.
- Controle de qualidade.
O gerenciamento de qualidade deve ser separado do gerenciamento de projeto para assegurar independência.
Qualidade de Processo e de Produto
A qualidade de um produto desenvolvido é influenciada pela qualidade do processo de produção. Isso é importante no desenvolvimento de software, visto que os atributos de qualidade de produtos são difíceis de avaliar. Contudo, existe um relacionamento muito complexo e fracamente compreendido entre processos de software e qualidade de produto.
Qualidade Baseada em Processo
Existe uma ligação nítida entre processo e produto nos bens manufaturados. Para o software, isso é mais complexo porque deve-se tomar cuidado para não impor padrões de processo inadequados – esses padrões poderiam reduzir, ao invés de melhorar, a qualidade do produto.
Garantia de Qualidade e Padrões
Os padrões são a chave para o gerenciamento efetivo de qualidade. Eles podem ser padrões internacionais, nacionais, organizacionais ou de projeto.
Padrões de Produto
Definem características que todos os componentes devem exibir, por exemplo, um estilo de programação comum.
Padrões de Processo
Definem como o processo de software deve ser institucionalizado.
Padrões de Documentação
Particularmente importantes – os documentos são a manifestação tangível do software.
- Padrões de processo de documentação.
- Padrões de documentos.
- Padrões de intercâmbio de documentos.
Planos de Qualidade
A estrutura do plano de qualidade inclui:
- Apresentação do produto.
- Planos de produto.
- Descrições de processo.
- Metas de qualidade.
- Riscos e gerenciamento de riscos.
Os planos de qualidade devem ser documentos breves e sucintos.
Controle de Qualidade
O controle de qualidade envolve a verificação do processo de desenvolvimento de software para assegurar que procedimentos e padrões estão sendo seguidos. Existem duas abordagens para controle de qualidade:
- Revisões de qualidade.
- Avaliação automatizada e medições de software.
Revisões de Qualidade
É o principal método de validação da qualidade de um processo ou de um produto. Um grupo examina uma parte ou o todo de um processo ou de um sistema, bem como sua documentação, para descobrir problemas potenciais. Existem diferentes tipos de revisão com objetivos diferentes:
- Inspeções para remoção de defeitos (produto).
- Revisões para avaliação de progresso (produto e processo).
- Revisões de qualidade (produto e padrões).
Medições e Métricas de Software
A medição de software dedica-se a derivar um valor numérico para algum atributo de um produto ou de processo de software. Permite comparações objetivas entre técnicas e processos.
Pontos-Chave sobre Gerenciamento de Qualidade
- O gerenciamento de qualidade de software dedica-se a assegurar que o software atende aos padrões necessários.
- Os procedimentos de garantia de qualidade devem ser documentados em um manual de qualidade da organização.
- Padrões de software são um encapsulamento de boas práticas.
- Revisões são a abordagem mais amplamente usada para avaliação de qualidade do software.
- A medição de software obtém informações sobre ambos, o processo e o produto de software.
- Métricas de qualidade de produto devem ser usadas para identificar componentes potencialmente problemáticos.
- Não existem métricas de software padronizadas e universalmente aplicáveis.