Engenharia de Software
Objetivos
Esta UC de 9 ECTS tem por objectivo dotar os alunos de competências para analisar sistemas complexos existentes, e fazê-los evoluir usando metodologias e ferramentas tipicamente usadas na indústria. Assim, o aluno deve:
-
Compreender os princípios e conceitos da Engenharia de Software; requisitos de sistema; modelação usando um conjunto principal de UML; padrões e estilos arquitetónicos; DevOps; Concepção e programação de sistemas de software extensíveis; testar e evoluir o código orientado a objetos, analisar o código orientado a objetos e derivar os modelos correspondentes; Padrões de design; frameworks e APIs.
-
Conhecer processos de engenharia de software; um conjunto principal de UML, padrões e estilos arquitetónicos; padrões de desenho; DevOps; técnicas de engenharia reversa e directa.
-
Ser capaz de usar um sistema existente de dimensão não trivial usando técnicas sistemáticas de engenharia reversa e direta; Usar padrões, estruturas e APIs.
Caracterização geral
Código
12660
Créditos
9.0
Professor responsável
Ana Maria Diniz Moreira, Miguel Carlos Pacheco Afonso Goulão
Horas
Semanais - 5
Totais - 5
Idioma de ensino
Português
Pré-requisitos
Esta cadeira tem como requisitos desejáveis base ter passado à cadeira de "Introdução à Programação" e "Programação Orientada a Objectos".
Bibliografia
Ian Sommerville, Software Engineering, Pearson, 10th edition, 2015
Jim Arlow and Ila Neustadt, UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (2nd Edition), Addison-Wesley Professional; 2 edition, July 7, 2005
Lanza M.; Marinescu R. Object-Oriented Metrics in Practice. Springer 2006. ISBN-10 3-540-24429
L. Bass, P. Clements, R. Kazman, "Software Architecture in Practice", 3rd edition, Addison-Wesley, 2012
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995
Len Bass, Ingo Weber, Liming Zhu, DevOps: A Software Architect''''s Perspective (SEI Series in Software Engineering), Pearson Education, 2015
S Demeyer, T Mens, Software Evolution, Springer, 2008
Glenford J. Myers, The Art of Software Testing, Third Edition, John Wiley & Sons, Inc., 2011
Método de ensino
3 horas semanais teóricas para apresentação dos conceitos, princípios e técnicas de apoio ao desenvolvimento e evolução de software. A matéria, ilustrada com exemplos de aplicação, e suportada por diapositivos e pela utilização do ambiente de desenvolvimento no computador do docente.
2 horas semanais de aulas práticas em laboratório onde os alunos colocam em prática as teorias e técnicas ensinadas das aulas teóricas anteriores. Os alunos podem esclarecer dúvidas durante as aulas ou nos horários de atendimento.
A avaliação tem duas componentes: um projeto e dois testes. O projeto dá frequência, por isso a nota mínima é 9.5 valores, e vale 70% da nota final. A média dos dois testes terá de ser, no mínimo, de 9.5 valores, para obter aprovação.
Método de avaliação
Os estudantes têm que obter aprovação nas componentes teórica e prática, cujo funcionamento é descrito de I a IV. A classificação de cada componente de projecto e testes é expressa na escala de 0 a 20 valores (com arredondamento às décimas).Apenas a nota final será arredondada às unidades.
I– Componente Teórica– Testes e Exame
1. A classificação da componente teórica (NT) é a média aritmética arredondada às décimas das classificações obtidas nos 2 testes presenciais sem consulta (a classificação de cada teste é arredondada às décimas) ou a classificação do exame final arredondada às décimas.
2. Os estudantes que obtenham uma classificação NT igual ou superior a 9,5 valores obtêm aprovação na componente teórica.
3. Cada teste incidirá essencialmente sobre toda a matéria leccionada nas aulas teóricas, e posta em prática nos laboratórios, até às aulas teóricas da semana anterior à semana da realização do teste.
4. Apesar de a avaliação nos testes não ser cumulativa, e devido à natureza dos assuntos abordados nesta Unidade Curricular, não é excluído que um elemento de avaliação se socorra de conhecimentos respeitantes à matéria avaliada em elemento(s) anterior(es).
5. Os testes realizam-se nas datas e horários anunciados no CLIP.
6. Todos os estudantes têm obrigatoriamente que estar inscritos num turno teórico e prático.
7. Os testes e exames serão presenciais. Os estudantes só poderão ter consigo durante a prova de avaliação:
a. Lápis/Caneta e borracha;
b. Obrigatório: Documento de identificação com fotografia;
8. Durante a realização das provas não é permitida a utilização de aparelhos electrónicos, tais como máquinas de calcular e telemóveis (os quais devem estar desligados e não podem estar sobre as mesas onde é realizada a prova).
9. Não é permitido desagrafar as folhas dos cadernos com os enunciados e com as resoluções feitas pelos estudantes na prova.
10. A prova será anulada se não forem satisfeitos os nºs 7,8 e 9.
11. Os estudantes que cometam fraude numa prova de avaliação (Teste ou Exame) terão a referida prova anulada, estão automaticamente reprovados na unidade curricular no presente ano lectivo, e perdem a frequência caso já a tenham obtido, o que implica que terão que obter frequência no ano lectivo seguinte.
II – Componente Projecto
1. As aulas práticas terão início na semana de de 12 de Setembro.
2. Os alunos devem submeter até dia 15 de Outubro qual o grupo de 5 elementos que pretendem ver formado para a realização do projeto. A escolha dos elementos do grupo é livre, podendo alunos de turnos distintos formar grupo.
3. A realização do projecto implica:
a. A entrega individual dos desafios semanais na aulas práticas com a prática de ferramentas ou conceitos relevantes à realização do projecto. A totalizarem 1 valor da nota final na componente NP
b. desde o dia da publicação do seu enunciado: o cumprimento de milestones definidas com entrega de artefactos do projecto (a detalhar no enunciado), incluindo os sumários de status do projecto semanais (de acordo com uma template fornecida pelo corpo docente), com peso de 9 valores na nota final (no componente NP).
d. O Relatório Final deverá conter todos os elementos requeridos no enunciado do projecto em formato electrónico.
4. O projecto será discutido e avaliado oralmente na última semana de aulas.
5. A classificação da componente projecto (NP) será atribuida individualmente e é determinada pelo conjunto da avaliação da Entrega final do projecto e discussão oral. Este valor será apresentado na escala de 0 a 20.
6. Os estudantes que obtenham uma classificação NP igual ou superior a 9,5 valores obtêm Frequência na cadeira.
III – Frequência
1. Os estudantes que obtenham Nota do Projecto (NP) >=9,5 obtêm frequência à unidade curricular.
IV – Classificação Final dos Estudantes
1. A classificação final (CF) é o resultado arredondado às unidades da seguinte expressão:
CF=NT×0.5+NP×0.5
2. Os estudantes que obtenham frequência, cuja nota final provisória seja positiva, e apresentem uma discrepância na nota do Projecto (NP) superior a 4 valores em relação à média dos testes NT poderão ser admitidos a uma prova oral.
3. Na prova oral mencionada no número anterior, os estudantes podem subir ou descer a nota final com a garantia de classificação mínima CF=NT.
4. A ausência à prova oral referida no número anterior traduz a aceitação por parte do estudante da nota final de NF = NT
IV – Melhoria de Nota
Os estudantes que pretendam efectuar melhoria de nota devem cumprir, para esse efeito, as formalidades legais de inscrição.
V – Aulas
1. Formato da aula teórica 90 min = 10 (tolerância para mudança de aulas e setup) + 80 (exposição)
2. Formato da aula Prática 120 min = 10 (tolerância para mudança de aulas e setup) + 110 min de introdução e exercícios com guia
VI – Outros
1. É total responsabilidade do aluno acompanhar as aulas teóricas e práticas (ou informar-se por colegas em caso de ausência), sendo que qualquer mensagem e conteúdo de matéria ou informações de natureza administrativa transmitido durante as aulas não será repetido.
2. Ao contactar por e-mail com os professores, os estudantes devem iniciar o Assunto (Subject) OBRIGATÓRIAMENTE COM :
“[ES] " (e assunto)
e o conteúdo da mensagem deverá conter Turno – Nome (primeiro e último) e Nº de estudante
3. Não serão respondidas mensagens electrónicas com perguntas cuja resposta conste nos pontos anteriores ou na página da unidade curricular no CLIP, portal moodle, ou que tenham sido devidamente esclarecidas nas aulas teóricas.
4. O meio de comunicação privilegiado deverá ser o horário de atendimento dos docentes, dedicado a dúvidas técnicas (que deverão ser marcadas até um dia de antecedência via e-mail com o professor do horário correspondente) e aulas teóricas ou práticas. As mensagens de email não relacionadas com conteúdo técnico serão respondidas com a brevidade possível, ou oralmente nas aulas teóricas quando demonstrem ser de interesse geral sendo responsabilidade do aluno tomar conhecimento do que foi dito.
5. Os e-mails não serão respondidos (com a ressalva, naturalmente, de casos excepcionais justificados) fora de horário normal laboral dos docentes.
Conteúdo
-
Engenharia de software: objetivos, princípios, ética, responsabilidades profissionais
-
Gestão de projetos de software
-
Processos de software (e.g. DevOps)
-
Metodologias de desenvolvimento de software:
-
Engenharia de requisitos: tipos e técnicas de requisitos
-
Arquitetura de software: conceitos, padrões e estilos
-
Análise e desenho orientados a objetos, usando um subconjunto CORE do UML (diagramas de classes, diagramas de pacotes, máquinas de estado, diagrama de sequência)
-
Implementação usando orientação a objetos (e.g. Java e C#)
-
Verificação e validação: revisões, testes unitários, integração, aceitação e carga
-
Reutilização planeada e riscos
-
Tecnologias de suporte:
-
Engenharia reversa (e.g. SourceMiner)
-
Especificação e modelação (e.g. USE, StarUML)
-
Implementação e evolução (e.g. Eclipse, GitHub)
-
Testes unitários, integração e carga (e.g. JUnit, Spock, JMeter)
-
Avaliação de complexidade (e.g. eclipse metrics plugin, inFusion)
-
Reutilização: frameworks e APIs