Licenciatura
Engenharia Informática
Área Científica
Ciências Informáticas
Duração
Semestral
Unidade Curricular
Engenharia de Software
ECTS
6
Horas de Contacto Teórico Práticas
60h
OBJETIVOS DA APRENDIZAGEM
Para concluir com sucesso esta unidade curricular, os alunos deverão demonstrar possuir os seguintes conhecimentos e capacidades:
1. Capacidade de analisar um problema e definir os requisitos computacionais e multimédia adequados à resolução do problema e referente proposta de solução;
2. Desenvolver competências para desenhar, programar, implementar e testar um sistema de software;
3. Capacidade de usar técnicas, métodos e ferramentas de engenharia de software que facilitam a prática da computação;
4. Desenvolver competências de trabalho em equipa em projetos de engenharia de software;
5. Compreensão das responsabilidades profissionais, éticas, legais, sociais e de segurança associadas à gestão dos sistemas e tecnologias de informação;
6. Reconhecer a necessidade de permanente atualização de conhecimento técnico na área das ciências da computação.
PROGRAMA
1. Engenharia de Software
1.1. Perspetiva tradicional da engenharia de software
1.2. Evolução do processo de engenharia de software
1.3. Caracterização do produto e do processo (software)
1.4. Processo de desenvolvimento de software
1.5. Ciclo de vida do software e metodologias
1.5.1. Cascata e modelos derivados
1.5.2. Metodologia evolutiva
1.5.3. Modelos RAD e Prototipagem
1.5.4. Modelo em Espiral
1.5.5. Metodologias ágeis
2. Engenharia de requisitos
2.1. Requisitos de software
2.2. Levantamento, análise e especificação requisitos
2.3. Cenários e casos de uso
2.4. Diagramas UML
2.5. Documentação de requisitos de software
3. Software design
3.1. Arquitetura geral
3.2. Arquitetura detalhada
3.3. Diagramas UML
3.4. Documentação do processo de design
4. Construção de software
4.1. Codificação e integração de software
4.2. Ambientes integrados de desenvolvimento
4.3. Linguagens de programação
4.4. Ferramentas e standards
4.5. Documentação do processo de construção
5. Testes e validação de software
5.1. Planeamento dos testes
5.2. Tipos e técnicas de testes de software
5.3. Testes unitários
5.4. Testes do sistema
5.5. Testes de integração
5.6. Integração com o processo de construção
5.7. Documentação do processo de testes
DEMONSTRAÇÃO DE COERÊNCIA ENTRE CONTEÚDOS PROGRAMÁTICOS E RESULTADOS DA APRENDIZAGEM
Esta unidade curricular pretende introduzir conceitos específicos de área técnico-científica respetiva e em simultâneo realizar implementações práticas dos principais conceitos de forma a validar o objetivo foi alcançado através da aprendizagem. Com este princípio de validação prática dos conceitos teóricos o docente pode sempre aplicar medidas corretivas.
Os conteúdos programáticos foram todos definidos em estrita articulação com os objetivos e competências a serem adquiridos pelos alunos. Os conteúdos programáticos incluem as principais temáticas científicas, em articulação com aquilo que tecnologicamente está a ser solicitado pelo mercado empresarial. Assim, partiu-se dos objetivos da unidade e utilizando padrões standard atuais, elaborou-se o conteúdo da unidade, ou seja, não foram elaborados autonomamente mas complementarmente. Portanto, existe uma forte relação objetivo-conteúdo.
METODOLOGIA DE ENSINO E AVALIAÇÃO
Atendendo à especificidade desta Unidade Curricular, privilegiar-se-á o contacto direto entre o estudante e o computador numa perspetiva computer based learning.
As aulas assumirão um carácter teórico-prático, cabendo ao docente a função de apresentação e enquadramento dos conceitos teóricos bem como da sua aplicação prática.
Com efeito o estudante terá um papel central na sua aprendizagem sendo estimulada a sua participação que se pretende ativa ao longo da unidade.
A adoção desta metodologia implica, em alguns momentos, a distribuição dos estudantes por grupos de trabalho em dinâmicas de grupo bem como realização constante de exercícios práticos de aplicação de conhecimentos.
Avaliação:
A avaliação será efetuada através de um exame escrito individual. Na classificação final, serão considerados elementos de avaliação contínua, tais como trabalhos (individuais ou em grupo).
DEMONSTRAÇÃO DE COERÊNCIA ENTRE METODOLOGIAS DE ENSINO E RESULTADOS DE APRENDIZAGEM
O modo de trabalho que se preconiza na Unidade Curricular centrado, quer em momentos de trabalho individual, quer de trabalho coletivo, visa contribuir para que o estudante desenvolva conhecimentos sólidos na Engenharia de Software.
Nesse sentido optou-se por metodologias de ensino centradas no estudante em que este tem um papel preponderante na sua aprendizagem permitindo, desde modo, dotar o estudante de ferramentas, mas, sobretudo, de capacidades de intervenção ativa. O computador será, sempre, um recurso presente nas aulas (que terão caráter teórico-prático) de modo a que os estudantes tenham contacto com os conceitos anteriormente referidos colocando-os em prática com exemplos concretos de utilização.
Nesse sentido justificam-se metodologias de ensino que estimulem a participação ativa e que promovam competências de autonomia nos processos e desenvolvimentos tecnológicos nas áreas que operem ou venham a operar.
As competências são desenvolvidas através da exposição participativa e da resolução de problemas consubstanciados em trabalhos supervisionados, que culminarão numa apresentação e discussão com os pares, no final da unidade curricular, que permitam o desenvolvimento de competências discursivas e comunicativas.
BIBLIOGRAFIA
Fundamental:
D. Weyns, (2020)“An Introduction to Self–adaptive Systems: A Contemporary Software Engineering”, Wiley.
K. Cooper,(2021) “Software Engineering Perspectives in Computer Game Development”, CRC.
M. Petre,(2019) “Software Designers in Action: A Human-Centric Look at Design Work”, CRC Press.
M. Richards, (2020)“Fundamentals of Software Architecture: An Engineering Approach”, O’Reilly.
R. Martin, (2017)“Clean Architecture: A Craftsman’s Guide to Software Structure and Design”, Pearson.
T. Winters,(2020) “Software Engineering at Google: Lessons Learned from Programming Over Time”, O’reilly.
Complementar:
I. Sommerville, (2015) “Software Engineering”, Pearson.
Pressman, R. (2011) Software Engineering: A practitioner’s Approach. 7th edition. McGraw-Hill Higher Education.
S. Guerreiro, (2015) “Introdução à Engenharia de Software”, FCA Editora.
Sommerville, Ian (2011). Software Engineering, 9th edition. Pearson.
SWEBOK (2014). Software Engineering Body of Knowledge. ACM / IEEE. Online: www.computer.org/web/swebok
INTERNET:
Acesso a publicações da especialidade, gratuitamente, através da rede SPRINGER:
https://link.springer.com/