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, Inglês
Língua(s) de apoio tutorial: Português, Inglês
Regime de Frequência: Presencial
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;
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
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.
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.
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
- Pedro Dinis Loureiro Salgueiro [responsável]