Qualidade do Software (2021/2022) - Departamento de Informática
Descrição

Esta Unidade Curricular (UC) promove o estudo de temas relacionados com a qualidade a curto, médio e longo prazo do software, desde a sua construção até à sua descontinuação, passando por um período potencialmente longo de evolução contínua.O estudo da qualidade é suportado por uma visão pragmática de normas, metodologias e modelos, em linha com as boas práticas da indústria. O programa inclui uma introdução à qualidade de software, explorada através de abordagens de promoção da qualidade no seu desenvolvimento e evolução e ancorada em modelos de qualidade. Apresentam-se e praticam-se técnicas de verificação e validação. A prazo, para responder a novos requisitos, os sistemas têm de passar por processos de evolução no sentido de preservar ou mesmo melhorar a sua qualidade. Assim, um dos objectivos desta UC é ministrar abordagens e técnicas que permitam identificar problemas de evolução, usando técnicas de engenharia reversa aplicadas a casos de estudo reais. Uma vez identificados, estes problemas são atacados com práticas de reengenharia, incluindo a refabricação de software, mantendo a rastreabilidade no processo. Por fim, discute-se a reutilização, como uma técnica de promoção da qualidade.

Objectivos

Saber:
- Componentes de um sistema de gestão da qualidade (SGQ)
- Modelos de qualidade de software e sua avaliação
- Verificação e validação
- Princípios, objectivos e conceitos fundamentais da reengenharia de software
- Software legado
- Técnicas e ferramentas de engenharia reversa
- Reengenharia e refabricação de programas

Saber fazer:
- Reificar um SGQ para projectos de desenvolvimento de software
- Construir um modelo de qualidade de software
- Selecionar e utilizar técnicas de verificação e validação adequadas
- Avaliação crítica do grau de cobertura atingido com as técnicas de verificação e validação
- Analisar sistemas existentes de dimensão não trivial
- Obtenção/extracção de conceitos de alto nível de sistemas legados
- Elaboração de diagnósticos úteis para a reengenharia
- Dominar técnicas de reengenharia de software

Soft skills:
- Trabalho em equipa
- Defesa pública de pontos de vista

Programa

1. Introdução à Qualidade de Software

2. Modelos de Qualidade de Software

2.1 Modelos de Qualidade do Processo

2.2 Modelos de Qualidade do Produto

3. Verificação e Validação de Software

3.1 Revisões (passo-a-passo, inspecções, demonstrações, auditorias)

3.2 Técnicas de leitura (ad-hoc, baseada em listas de verificação, baseada em defeitos, baseada em perspectiva)

3.3 Análise de custos e benefícios das revisões

3.4 Teste de software (fundamentos, testes de caixa negra, testes de caixa branca)

4. Evolução de Software

4.1 Engenharia reversa de sistemas de software

4.2 Métricas de software

4.3 Visualização de software

5. Reengenharia de sistemas de software

5.1 Fundamentos de reengenharia

5.2 Refabricação

6. Desenho e Reutilização de Software

6.1 Desarmonias de concepção

6.2 Padrões de concepção

Bibliografia Principal

Chikofsky et al. Reverse Engineering and Design Recovery: a Taxonomy. IEEE Soft. 7(1),1990.

Lanza M.; Marinescu R. Object-Oriented Metrics in Practice. Springer-Verlag 2006.

Fowler M. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.

Mens, et al.: Guest Editors'''' Introduction: Software Evolution. IEEE Software 27(4), 2010.

Gamma, Helm, Johnson, Vlissides. "Design Patterns Elements of reusable object-oriented software". Addison Wesley, 1995.

Myers, et al.: The Art of Software Testing, 3rd ed., 2011.

Maurício Aniche et al. “Software Testing: From Theory to Practice”, GitBook, 2021.

ISO/IEC 25023:2016

ISO/IEC 25010:2011

Requisitos Prévios

Engenharia de Software, Métodos de Desenvolvimento de Software

Esforço do Aluno
  Horas por crédito 28
  Horas p/ semana Semanas Horas
Aulas práticas e laboratoriais   26.0
Aulas teóricas   26.0
Avaliação   6.0
Estudo   50.0
Projectos e trabalhos   60.0
Total de Horas 168
ECTS 6.0