Informação adicional: https://moodle.fct.unl.pt/course/view.php?id=7054
Esta cadeira é destinada a alunos do 3º ano do MEI, em substituição da antiga cadeira Métodos de Desenvolvimento de Software (MDS) do MIEI igualmente do 3º ano. Sendo uma cadeira nova, a frequência obtida em MDS não transita para a cadeira de SE. Mais, esta cadeira não substitui a antiga cadeira "Engenharia de Software" do MIEI 4º ano.
Esta unidade curricular é o ponto de partida para expor os alunos a sistemas de média ou grande dimensão, desenvolvidos por terceiros, desenvolvendo capacidades de análise e compreensão de código para posterior evolução, segundo uma abordagem DevOps. Equipas de até 6 alunos estendem projectos open source existentes (em domínios diversos tais como jogos, aplicações de negócio e ferramentas de desenvolvimento), com novas características. Para isso, os alunos aprenderão e usarão na prática um conjunto de metodologias de desenvolvimento e evolução de software, desde os requisitos à implementação e teste do software, sendo fundamental a utilização de técnicas planeadas de reutilização como a utilização de padrões e frameworks e de engenharia reversa. Os vários passos do processo de desenvolvimento (análise, especificação, desenho de solução, implementação, testes e operação) serão apoiados por tecnologias adequadas e tipicamente usadas na indústria.
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.
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
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
Esta cadeira tem como requisitos desejáveis base ter passado à cadeira de "Introdução à Programação" e "Programação Orientada a Objectos".
Horas por crédito | 28 | ||
Horas p/ semana | Semanas | Horas | |
Aulas práticas e laboratoriais | 2.0 | ||
Aulas teóricas | 3.0 | ||
Avaliação | 6.0 | ||
Estudo | 60.0 | ||
Projectos e trabalhos | 116.0 | ||
Total de Horas | 187 | ||
ECTS | 9.0 |