Unidade Curricular:Código:
Engenharia de Software831ESOF
Ano:Nível:Curso:Créditos:
3LicenciaturaEngenharia Informática6 ects
Período Lectivo:Língua de Instrução:Nº Horas:
Primeiro SemestrePortuguês/Inglês78
Objectivos de Aprendizagem:
Fundamentos, modelos e ferramentas de engenharia de software utilizados na definição, gestão, desenvolvimento e avaliação de sistemas de software.
Conteúdos Programáticos:
1. Introdução
1.1 Objetivos, conteúdos
1.1 Software engineering processes
2. Métodos de engenharia de software
2.1 Paradigmas de programação
2.2 Design patterns
3. Gestão de projetos de software
3.1 Planeamento
3.2 Documentação
3.3 Ciclo de desenvolvimento
3.4 Gestão do risco
4. Ferramentas de engenharia de software
4.1 Controlo de versões
4.2 Análise estática
4.3 Debugging
4.4 Optimização de código
5. Prática da engenharia de software
5.1 Ferramentas de desenvolvimento
5.2 Testes
5.3 Integração
Demonstração da Coerência dos Conteúdos Programáticos com os Objectivos da Unidade Curricular:
Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos. Os conceitos fundamentais da engenharia de software são apresentados através das diferentes secções dos conteúdos programáticos. Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos práticos. As diferentes tarefas do processo de engenharia de software são aplicadas num projeto propostos aos alunos, i.e., contemplando as diferentes fases como a analise de requisitos, a modelização, a implementação, os testes e a manutenção.
Metodologias de Ensino (Avaliação Incluída):
A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo a ferramentas de modelização ou desenvolvimento apropriadas. A avaliação é decomposta em duas componentes: a teórica e a prática. No primeiro caso a avaliação resulta de um conjunto de testes escritos aplicados durante o semestre sobre a matéria que for sendo leccionada em sala de aula. No segundo caso resulta de trabalhos práticos propostos pelo docente e que são efetuados e defendidos pelos alunos ao longo do semestre. Outro parâmetro em consideração é o desempenho do aluno em sala de aula e a sua assiduidade durante o período letivo. A nota final é uma média pesada destas três componentes.
Demonstração da Coerência das Metodologias de Ensino com os Objectivos de Aprendizagem da Unidade Curricular:
A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software e equipamentos apropriados. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura. Nesta unidade curricular os diferentes conceitos de engenharia de software serão abordados. Os conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas.
Bibliografia:
[1] Pressman, R., ”Software Engineering: A practitioner’s Approach”, 7th Ed., MacGraw-Hill, 2009.
[2] Sommerville, I., ”Software Engineering”, Adisson-Wesley, 2005.
[3] Jacobson, I., Booch, G. and Rumbaugh, J., “The Unified Software Development Process”, Addison-Wesley, 1999.
[4] Guerreiro, S., “Introdução à Engenharia de Software”, FCA, 2015.
Docente (* Responsável):
Alessandro Moreira (afmoreira@ufp.edu.pt)
Feliz Ribeiro Gouveia (fribeiro@ufp.edu.pt)