área científica
Informática / Sistemas de Informação
escolaridade
ensino teórico (T) - 2 horas/semana
ensino prático e laboratorial (PL) - 2 horas/semana
idioma(s) de lecionação
Português, Inglês
objectivos
O principal objectivo deste curso é aplicar DevOps para especificar, desenvolver e instalar um sistema de software usando uma plataforma de nível empresarial no contexto de um projecto em equipa
O projecto desenvolvido pelos alunos será fulcral para consolidar e aplicar os conhecimentos e aspectos técnicos ao longo da UC. Durante a UC vários assuntos relacionados com a DevOps serão abordados desde aspectos mais gerais como aplicação de padrões de desenho até assuntos mais pragmáticos como instalar e manter a infraestrutura que dá suporte ao ciclo da DevOps ( desenvolvimento, teste e instalação automática, … ). O curso irá usar a JavaEE / spring boot e o ecosystem DevOps como solução de referência.
competências
Saber:
- Principais plataformas baseadas em java para aplicações empresariais
- Desenho e padrões de arquitectura
- Modelos e Componentes
- DevOps
- Processos de desenvolvimento e ferramentas básicas
- Preocupações nomeadamente ao nível de QA, automação e operação
- BDD (Behaviour driven approach)
- Principais conceitos sobre testes funcionais e não funcionais
- Testes como especificação
- Instalação baseada em “containers”
- Conceitos e principais ferramentas
Compreender:
- Custo benefício entre opções de desenho, técnicas e infraestrutura
- Processo de desenvolvimento vs. automação
- critérios de QA vs objectivo do sistema
- Necessidade de processo de testes de Qualidade
- Testes podem ser uma forma de especificação
- Validação e verificação de sistemas
- O resultado pretendido é um sistema funcional e não apenas código funcional
Ser capaz de:
- Entregar um sistema funcional baseado em plataformas baseadas em java
- Com uma infraestrutura DevOps
- Conforme a especificação
- Verificado através de QA: functional and nonfunctional requirements testing
- Deliver results on time according to specification
- Trabalhar em equipa incluindo (auto) avaliação de contribuição pessoal
conteúdos
Teóricas:
Desenho, padrões e arquitecturas de software
- “Runtime”, servidores e “containers”
- Persistência, serviços e mensagem
- Injecção de dependência
Devops: conceitos básicos e processo para manutenção e instalação
Conceitos básicos de testes e Qualidade de software (QA)
Enterprise testing
- Testes de componentes, integração e aceitação
- Testes não funcionais: interfaces com utilizador, desempenho, ...
Labs:
Ferramentas básicas: maven, junit, logging, docker
JavaEE & spring-boot
- Aplicações web baseadas em http: servlets, JAX-RS,
- Sistemas de mensagens
- Soluções de persistência
- Componentes de servidores aplicacionais
DevOps toolchain
- Testes e Integração contínua baseada em Jenkins
- Monitorização e Logging
avaliação
O curso adopta a avaliação contínua. A avaliação será suportada no projecto do curso baseda a em duas componentes:
- equipa (40%)
Baseada na avaliação do resultado final mas também na evolução do projecto ao longo de várias iterações e apresentações.
- pessoal (60%)
Baseada nos resultados dos testes e inclui desempenho pesoal nas apresentações pessoais e na avaliação da participação pessoal no âmbito do projecto e da equipa.
requisitos
Desejável possuir alguma experiência em programação orientada por objectos (e.g. Java, C++, C#) e na modelação de sistemas baseada em UML (e.g. modelação de casos de uso, modelaçao de classes, ...)
metodologia
O principal objectivo do curso é aplicar DevOps na especificação, desenvolvimento e instalação de um sistema de software de média complexidade usando uma plataforma de nível empresarial no contexto de um projecto em equipa.
O sistema de software é o resultado principal do curso onde os alunos irão aplicar os conhecimentos adquiridos nas aulas. As aulas serão usadas para suportar o projecto e para abordar matérias identificadas como relevantes durante o decorrer dos projectos.
Os projectos terão equipas de 4 a 6 elements. O âmbito e cenários dos projectos dependerão dos temas e desafios apresentados anualmente. O projecto será dividido em várias iterações com o foco a) incremento das funcionalidades do sistema final e b) no uso de uma aproximação DevOps para instalação e teste do sistema no final do curso.
A avaliação do projecto dependerá dos cumprimento dos objectivos a cada iterações e de uma entrega (código, documentação) e demonstração final.
bibliografia base
Main reference
Software Architect's Handbook /Joseph Ingeno / 2018 - ISBN 139781788624060
Other references:
Emergent Design: The Evolutionary Nature of Professional Software Development / Scott L. Bain / 2008
The Process of Software Architecting /Peter Eeles, Peter Cripps / 2009
Manage Software Testing / Peter Farrell-Vinay / 2008 - ISBN-10: 0849393833
bibliografia recomendada
Main reference
- Software Architect';s Handbook / Joseph Ingeno / 2018 - ISBN 139781788624060
Other references:
- Emergent Design: The Evolutionary Nature of Professional Software Development / Scott L. Bain / 2008
- The Process of Software Architecting /Peter Eeles, Peter Cripps / 2009
- Manage Software Testing / Peter Farrell-Vinay / 2008
- Software Requirements (3rd Edition) / Karl Wiegers, Joy Beatty / 2013