á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 uma aplicação usando uma plataforma de nível empresarial (J2EE & spring boot).
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
After the completing the course students will:
Know:
- J2EE & spring boot frameworks
- design and architectural patterns
- DevOps from a developer and operations perspective
- Process and human roles ( development, management, infrastructure)
- Process and related concerns (quality, automation, deployment): Basic tools & tool chains
- Test / behaviour driven approach
- Tests as specification
- Functional and non functional test options
Understand:
- The trade off between design, technical and infrastructure level in terms of
- Specification
- Development process & Automation
- Quality assessment criteria and objectives
- Working product means provide functional and nonfunctional quality assessment
- Tests can be a missing link via (testable) specification
- Validation and verification for (working) system
- Deliver a product means deploy a working system, not having working code
Be able to:
- DELIVER a WORKING medium size system within a team using j2EE and/or spring boot
- Deploy a DevOps infrastructure
- Evolve from specification to deployment
- Quality assessment: functional and nonfunctional requirements testing
- Work in a team within an agile iterative framework
- Team and personal accountability
- Deliver results on time according to specification
conteúdos
Lectures:
Course overview
Design patterns and architecture styles
- Runtime, servers and containers
- Persistence, Services , Messaging
- Dependency injection & naming service
Devops: basic concepts, the toolchain & deployment
Basic testing concepts: testing patterns, BDD, Mocks,
Enterprise testing
- component, integration and acceptance testing
- non functional: performance , user interface
Labs:
JavaEE & spring-boot
- basic tools: maven, junit, logging
- http based application: servlets, JAX-RS, JAX-WS
- Presentation layer: Java Server Fases
- Messaging: JMS, kafka
- Persistence: JPA
- Services: Enterprise Java Beans
DevOps toolchain
- Testing: Junit, cucumber and mocks
- Continuous integration & QA: jenkins
- Entreprise testing: embedded containers, arquillian
- Performance: jmeter
- Ops: Docker
- 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 projecto de média complexidade usando uma plataforma de nível empresarial ( J2EE , spring boot).
O projecto é o resultado principal e será 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