Processos e Metodologias de Software

Conhecimentos de Base Recomendados

Muito embora não existam precedências definidas, é de todo desejável que o aluno tenha conhecimentos de uma linguagem de programação, de preferência uma linguagem de programação orientada por objetos.

Métodos de Ensino

As aulas são lecionadas em regime teórico-prático, compreendendo a exposição teórica dos conceitos e a demonstração da sua aplicação, com recurso à utilização de computadores e ferramentas digitais. Será utilizado um processo dinâmico de ensino-aprendizagem, fundamentalmente interativo, com suporte a ferramentas digitais e baseado nas metodologias “Blended learning”, centrados no aluno, com exibição de slides e realização de exercícios práticos.

Resultados de Aprendizagem

Objectivos:

– Dotar os alunos de um conjunto de conceitos, técnicas e ferramentas que permitam a construção de software em variados domínios de aplicação.

 Competências a adquirir:

1. Ter uma visão global do papel dos diferentes domínios da engenharia de software.

2. Saber realizar uma análise de requisitos de software.

3. Ser capaz de elaborar a arquitetura do software a ser desenvolvido.

4. Saber escolher as técnicas de implementação mais adequadas.

5. Ter conhecimentos de um conjunto de técnicas de teste e validação de software.

6. Estar consciente dos desafios que se colocam à construção de sistemas e aplicações de maior dimensão.

Programa

1.           Engenharia de software

1.1.        Conceitos introdutórios

1.2.        Desenvolvimento profissional de software

1.3.        Aspetos humanos

1.4.        Ética

1.5.        Alguns exemplos

 

2.           Processos de software

2.1.        Modelos de processo de software

2.2.        Atividades do processo

2.3.        Lidar com mudança

2.4.        Melhoria dos processos

 

3.           Desenvolvimento ágil de software

3.1.        Métodos ágeis

3.2.        Técnicas de desenvolvimento ágil

3.3.        Gestão ágil de projetos

3.4.        XP e SCRUM

3.5.        Projetos de grande dimensão

 

4.           Engenharia de requisitos

4.1.        Requisitos funcionais e não-funcionais

4.2.        Processos da engenharia de requisitos

4.3.        Obtenção dos requisitos

4.4.        Especificação dos requisitos

4.5.        Validação dos requisitos

4.6.        Alteração dos requisitos

 

5.           Modelação do sistema

5.1.        Princípios fundamentais

5.2.        Modelação baseada em cenários

5.3.        Modelação baseada em classes

5.4.        Modelação funcional

5.5.        Modelação comportamental

 

6.           Projeto de arquitetura

6.1.        Arquitetura de software

6.2.        Decisões de arquitetura

6.3.        Vistas

6.4.        Padrões

6.5.        Arquiteturas de aplicações

 

7.           Projeto e implementação

7.1.        Projeto orientado por objetos utilizando UML

7.2.        Interface com o utilizador

7.3.        Questões de implementação

7.4.        Desenvolvimento open-source

 

8.           Teste de software

8.1.        Testes na fase de desenvolvimento

8.2.        Desenvolvimento orientado para os testes

8.3.        Testes de releases

8.4.        Testes de utilizador/cliente

 

9.           Qualidade do software

9.1.        Conceitos fundamentais

9.2.        Alcançar a qualidade do software

9.3.        Custo dos defeitos do software

9.4.        Tipos de revisões

9.5.        Garantia de qualidade do software

9.6.        As normas que qualidade ISO 9000

Docente(s) responsável(eis)

Estágio(s)

NAO

Bibliografia

Engineering Software Products: An Introduction to Modern Software Engineering,
Ian Sommerville, Published by Pearson, 2019, ISBN 13: 9780135210642

Software Engineering: A Practitioner’s Approach, 9th Edition, 2020, by Roger Pressman and Bruce Maxim, Publisher: McGraw-Hill Education; 9 edition, ISBN 13: 9781259872976

Essentials of Software Engineering 4th Edition, 2016, by Frank Tsui (Author), Orlando Karam (Author), Barbara Bernal (Author), Publisher: Jones & Bartlett Learning; 4 edition ISBN-13: 978-1284106008