2024

Engenharia de software

Nome: Engenharia de software
Cód.: INF13276M
6 ECTS
Duração: 15 semanas/156 horas
Área Científica: Informática

Língua(s) de lecionação: Português
Língua(s) de apoio tutorial: Português

Objetivos de Desenvolvimento Sustentável

Objetivos de Aprendizagem

Ao concluírem esta Unidade Curricular os alunos deverão obter conhecimentos avançados de Engenharia de Software que lhes permita criar software de qualidade, ágil e de fácil manutenção, incluindo a gestão de todo o processo associado à criação de software. Em concreto, os alunos deverão:

ser capazes de desenvolver software usando metodologias baseadas em testes;
conhecer a evolução do software e ser capazes de fazer a sua manutenção;
conhecer várias arquitecturas de software;
conhecer e ser capazes de utilizar diferentes ambientes de execução de software;
conhecer e serem capazes de utilizar métodos avançados de system building, processos de deployment, continuous integration, continuous deployment e configuração de sistemas;
conhecer e serem capazes de usar métodos de gestão e planeamento de software;

Conteúdos Programáticos

Testes de software
Processos de desenvolvimento baseado em testes e em comportamentos
Evolução de software
Processo de evolução
Dinâmica de evolução
Manutenção de software
Gestão de sistemas legados
Reutilização de software
Formas de reutilização de software
Frameworks aplicacionais
Reutilização de COTS
Engenharia de software baseada em componentes
Componentes
Modelos de componentes
Composição de componentes
Engenharia de software distribuído
Problemas associados
Sistemas cliente-servidor
Padrões de arquiteturas
Software como serviço
Arquitecturas baseadas em serviços
Serviços como componentes reutilizáveis
Engenharia de serviços
Desenvolvimento de software com serviços
Ambientes de execução de software
Containers
Máquinas virtuais
Gestão de configurações
Construção de sistemas
Configuração de infraestruturas
Gestão de software
Gestão de projectos
Planeamento de projectos
Gestão de software
Gestão de projectos
Planeamento de projectos
Qualidade de software
Melhoria de processos

Métodos de Ensino

As metodologia de ensino serão baseadas em aulas teóricas e práticas. Procura-se uma aprendizagem ativa que estimule o aluno a desenvolver os diversos temas que são abordados nesta unidade curricular. Serão resolvidos problemas em grupo durante as aulas práticas, que farão parte de um projeto que será desenvolvido ao longo de toda a unidade curricular, e que terá como objetivo desenvolver um software de raíz recorrendo aos conceitos de Engenharia de Software apresentados nas aulas teóricas e às ferramentas exploradas nas aulas práticas, permitindo aos alunos consolidar os conhecimentos adquiridos nesta unidade curricular.

Os elementos de avaliação serão compostos por 2 componentes: 1) componente teórica (60%) e 2) componente prática (40%). A componente teórica é composta por 2 Frequências ou Exame. A componente prática é composta pelo desenvolvimento de um projeto em grupo, desenvolvido ao longo da unidade curricular.

Bibliografia

Sommerville, Ian. Software engineering, Global Edition (10th Edition). New York: Pearson Education Limited, 2015.
Humble, Jez, and David Farley. Continuous delivery: reliable software releases through build, test, and deployment automation. Boston: Addison-Wesley, 2011.
Freeman, Steve, and Nat Pryce. Growing object-oriented software, guided by tests. Pearson Education, 2009.

Equipa Docente (2023/2024 )