Qualidade do Software

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

Caracterização geral

Código

11170

Créditos

6.0

Professor responsável

Miguel Carlos Pacheco Afonso Goulão, Miguel Jorge Tavares Pessoa Monteiro

Horas

Semanais - 4

Totais - 52

Idioma de ensino

Inglês

Pré-requisitos

Engenharia de Software, Métodos de Desenvolvimento de Software

Bibliografia

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

Método de ensino

As aulas teóricas consistem na exposição de matéria, ilustrada com exemplos de aplicação, e suportada por diapositivos e pela utilização do ambiente de desenvolvimento no computador do docente.

Nas aulas de laboratório, os alunos resolvem exercícios que constituem exemplos concretos de aplicação dos conceitos dados nas anteriores aulas teóricas.

Os alunos podem esclarecer dúvidas durante as aulas ou nos horários de atendimento.

Sempre que existam alunos que não falem Português, as aulas serão leccionadas em Inglês. Os materiais são, também, em inglês.

Método de avaliação

Componentes da Avaliação

A avaliação inclui uma componente teorico-prática e uma componente prática.

Componente de Projecto e Frequência

A componente de projecto consiste em 2 trabalhos práticos e vale 55% da nota final.

1º Trabalho Prático (P1): realizado em grupos de 2 alunos, com duas entregas parciais. Este trabalho vale 35% da nota final (15% para a pior nota, 20% para a melhor).

2º Trabalho Prático (P2): realizado em grupos de 2 alunos, com uma entrega final. Este trabalho vale 20% da nota final.

Para obter frequência, um aluno tem de obter uma média ponderada das notas dos trabalhos >= 9.5 valores. As frequências obtidas em 2020/2021 mantém-se validas, bem como a respectiva nota da componente prática.

Componente teórico-prática

A componente teórico-prática é composta por dois testes individuais, valendo 45% da nota final.

1º Teste (T1): Realizado presencialmente, com consulta de duas páginas manuscritas. Este teste vale 15% da nota final.

2º Teste (T1): Realizado presencialmente (se as condições sanitárias o permitirem), sem consulta. Os alunos podem usar uma calculadora simples. Este teste vale 30% da nota final.

A nota da componente teórico-prática é a média ponderada das notas dos testes ou a nota de Exame (Ex). Para obter aprovação, é necessário obter uma média ponderada da nota dos testes (ou do exame) >= 9.5 valores e ter frequência válida.

Nota Final

Quando a Unidade Curricular é realizada por testes, o cálculo da nota final é dado por:

NF = T1 * 0.15 + T2 * 0.30 + P1 * 0.35 + P2 * 0.20

Quando a Unidade Curricular é realizada por exame, o cálculo da nota final é dado por:

NF = Ex *0.45 + P1 * 0.35 + P2 * 0.20

Para obter aprovação tem de se ter frequência e obter uma nota de avaliação teórico-prática >= 9.5.

Caso a nota de avaliação teórico-prática seja < 9.5, a nota final é a nota da avaliação teórico-prática.


Conteúdo

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

Cursos

Cursos onde a unidade curricular é leccionada: