Globalcode – Open4education
Construindo um microserviço
JavaEE 100% funcional em 30
minutos
Rafael Chaves
rafael@abstratt.com - @abstratt
Globalcode – Open4education
Palestrante
Formação: bacharel (2000) e mestre (2004) em Computação pela UFSC
Passado:
• OTI/IBM Canada: Eclipse (2002-2005), Jazz/Team Concert (2005-2006)
• Genologics: Desenvolvedor Senior/Arquiteto (2008-2012)
Recente:
• Desenvolvendo Cloudfier (2012-)
• EasyAlpha: serviço de desenvolvimento expresso de MVPs (2016-)
Globalcode – Open4education
Objetivo
Construir um back-end / micro-serviço / “self-contained-system”
simples com JavaEE
• API REST usando JAX-RS
• Persistência em BD relacional usando JPA
• Lógica de negócios em Java/JPA
• Testes em JUnit
• Bônus: GUI “admin” em Angular
Globalcode – Open4education
Arquitetura-alvo
Globalcode – Open4education
A aplicação exemplo:
Tarefas do time
1. Tarefas e Colaboradores✔
2. Colaboradores podem completar tarefas✔
3. Colaboradores podem repassar tarefas✔
4. Detalhes (opcionais) na tarefa
5. Permitir reabrir tarefa
6. Apenas colaborador pode completar tarefa
Globalcode – Open4education
DEMO 1
Aplicação exemplo
Globalcode – Open4education
Como?
Usando uma linguagem de mais alto nível que Java (ou Ruby,
Python, Scala, Javascript...)
Separando solucão conceitual e arquitetura
Sem escrever nenhuma linha de código Java (ou JavaScript) “no
braço”
Implementação JavaEE 100% obtida via tradução automática
Globalcode – Open4education
Por quê?
Abstração mais alta ⇒ melhor compreensão do negócio do
cliente
Separação negócio/tecnologia ⇒ reuso, especialização
Automação ⇒ produtividade, custo, qualidade
100% geração ⇒ impacto permanente no desenvolvimento
Globalcode – Open4education
Completando a aplicação exemplo
1. Tarefas e Colaboradores✔
2. Colaboradores podem completar tarefas✔
3. Colaboradores podem repassar tarefas✔
4. Detalhes (opcionais) na tarefa
5. Permitir reabrir tarefa
6. Apenas colaborador pode completar tarefa
Globalcode – Open4education
Tempo de desenvolvimento vs.
tempo de implantação
• Nem sempre podemos escolher a plataforma de
implementação
• Mas deveríamos ter liberdade sobre a linguagem usada em
tempo de desenvolvimento
• A melhor plataforma de implementação hoje não será a
mesma em um ano
Globalcode – Open4education
Em busca de uma linguagem
para aplicações de negócios
Que forneça mecanismos que permitam modelar o domínio do
problema de forma mais natural
Que permita criar soluções independentes de arquitetura
Que ofereça boa usabilidade para programadores
Globalcode – Open4education
Que linguagem suporta...
• Classes, atributos, operações?
• Comportamento imperativo?
• Eventos, comunicação por mensagens?
• Relacionamentos?
• Atributos derivados?
• Restrições: pré-condições, invariantes?
• Máquinas de estado?
Globalcode – Open4education
Java?
Globalcode – Open4education
Java
• Classes, atributos, operações? ✔
• Comportamento imperativo? ✔
• Eventos, comunicação por mensagens? ✘
• Relacionamentos? ✘
• Atributos derivados? ✘
• Restrições: pré-condições, invariantes? ✘
• Máquinas de estado? ✘
Globalcode – Open4education
Python?
Globalcode – Open4education
Ruby?
Globalcode – Open4education
Scala?
Globalcode – Open4education
C#?
Globalcode – Open4education
UML!
Globalcode – Open4education
UML?!
“Mas UML não é aquela linguagem gráfica que o analista de
negócios e a arquiteta vivem insistindo para que a gente use
mas que eu sei que é uma grande perda de tempo?!”
- um Programador Pragmático
Globalcode – Open4education
UML
• Classes, atributos, operações ✔
• Comportamento imperativo ✔
• Eventos, comunicação por mensagens ✔
• Relacionamentos ✔
• Atributos derivados ✔
• Restrições: pré-condições, invariantes ✔
• Máquinas de estado ✔
Globalcode – Open4education
UML: uma linguagem superior para
aplicações de negócios?
Que forneça mecanismos que permitam modelar o domínio do
problema de forma mais natural ✔
Que permita criar soluções independentes de arquitetura ✔
Que ofereça boa usabilidade para programadores ✘
Diagramas são insuficientes para especificar comportamento
Globalcode – Open4education
Para “visão geral”
Texto < Diagramas
Globalcode – Open4education
Para detalhes
Texto > Diagramas
Globalcode – Open4education
Para programadores
Texto > Diagramas
Globalcode – Open4education
UML e múltiplas notações
Sintaxe abstrata
Semântica
Sintaxe
concreta A
Sintaxe
concreta B
Sintaxe
concreta C
Sintaxe
concreta Z
...
Globalcode – Open4education
TextUML: sintaxe UML para
programadores
Por que textual? Texto é a melhor notação para modelar
comportamento (ok para outras áreas)
Mesmo nível de abstração que a notação gráfica (mesma
semântica/sintaxe abstrata)
Apenas elementos úteis para construção de software (classes,
máquinas de estado, atividades)
Globalcode – Open4education
Geração de código JavaEE
Globalcode – Open4education
Gerando a aplicação: entidades
• Entidade -> entidade JPA (elementos de instância)
• Entidade -> serviço JPA (CRUD e elementos de classe)
• Entidade -> resource JAX-RS
• Entidade -> serializador entidade JPA como Map/JSON
Globalcode – Open4education
Atributos
Globalcode – Open4education
Atributos em entidades JPA
Globalcode – Open4education
Relacionamentos
Globalcode – Open4education
Relacionamentos em entidades JPA
Globalcode – Open4education
Ações
Globalcode – Open4education
Ações em entidades JPA
Globalcode – Open4education
Ações em resources JAX-RS
Globalcode – Open4education
Consultas
Globalcode – Open4education
Consultas em serviços JPA
Globalcode – Open4education
Consultas em resources JAX-RS
Globalcode – Open4education
Consultas em resources JAX-RS
Globalcode – Open4education
Máquinas de estado
Globalcode – Open4education
Máquinas de estado
Globalcode – Open4education
Máquinas de estado em entidade JPA
Globalcode – Open4education
Permissões
Globalcode – Open4education
Permissões em entidade JPA
Globalcode – Open4education
Permissões em resource JAX-RS
Globalcode – Open4education
Casos de teste
Globalcode – Open4education
Casos de teste em JUnit
Globalcode – Open4education
Bônus: documentação para analistas de negócio
Globalcode – Open4education
Bônus: documentação para analistas de negócio
Globalcode – Open4education
Cloudfier
• Ambiente de modelagem (Text)UML na web
• Prototipação, testes, geração de código
http://github.com/abstratt/cloudfier
http://cloudfier.com
Globalcode – Open4education
Xtend
• Linguagem para JVM
• Excelente para implementar geradores de código
https://www.eclipse.org/xtend/
Globalcode – Open4education
kirra-angular
• Biblioteca Javascript standalone
• GUI dinâmica para APIs REST
http://github.com/abstratt/kirra-angular
Globalcode – Open4education
Construindo um microserviço
JavaEE 100% funcional em 30
minutos
Rafael Chaves
rafael@abstratt.com - @abstratt

Mais conteúdo relacionado

PDF
TDC SP 2016 - Dos requisitos à implantação em uma palestra
PDF
Dos requisitos à implantação em uma palestra
PDF
Apresentação TDC - Análise de Negócios
PDF
Automação de testes em projetos ágeis
PPT
Programação Funcional usando F#
PPTX
Usando Visão Computacional para Identificar Letras em Libras
PDF
Análise Estática de Código
PPSX
TDC2018SP | Trilha Arq .Net - Performance e feature
TDC SP 2016 - Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestra
Apresentação TDC - Análise de Negócios
Automação de testes em projetos ágeis
Programação Funcional usando F#
Usando Visão Computacional para Identificar Letras em Libras
Análise Estática de Código
TDC2018SP | Trilha Arq .Net - Performance e feature

Mais procurados (20)

PDF
Conheça Visual Studio IntelliCode e Visual Studio Live Share
PPTX
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
PPT
Arquitetura Limpa em .NET Core
PPTX
Machine Learning Black Boxes
PDF
O Software Livre e o Mercado de Trabalho: Certificações Profissionais - Vande...
PPTX
Utilizando a API do Roslyn, o novo compilador do C#
PPTX
Microsoft opensource
 
PPTX
Boas práticas de desenvolvimento Ágil
PDF
Refatorar é preciso. Palestra TDC 2014
PPTX
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
PPTX
Desenvolvimento de software: Mundo ideal x Mundo real
PPTX
Desenvolvimento de software mundo ideal x mundo real
PDF
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
PDF
Qualidade em projetos PHP - SoLiSC 2011
PPTX
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
PDF
Conheça como a Vinta trabalha.
PPTX
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
PPTX
Entity Framework 7.0 a.k.a Entity Core 1.0
PPTX
WTM - Entrega Contínua
Conheça Visual Studio IntelliCode e Visual Studio Live Share
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
Arquitetura Limpa em .NET Core
Machine Learning Black Boxes
O Software Livre e o Mercado de Trabalho: Certificações Profissionais - Vande...
Utilizando a API do Roslyn, o novo compilador do C#
Microsoft opensource
 
Boas práticas de desenvolvimento Ágil
Refatorar é preciso. Palestra TDC 2014
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software mundo ideal x mundo real
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
Qualidade em projetos PHP - SoLiSC 2011
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Conheça como a Vinta trabalha.
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
Entity Framework 7.0 a.k.a Entity Core 1.0
WTM - Entrega Contínua
Anúncio

Destaque (12)

PDF
Restful APIs com Spring 3
PDF
Refatorando o software corporativo
PDF
Cloudfier business pitch deck
PPTX
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
PDF
Modernização de Sistemas de Gestão
PPT
Code generation
PDF
Separando arquitetura e negócios em sistemas de gestão
PDF
11 Dogmas of model driven development
PDF
AlphaSimple product pitch
PDF
MDD with Executable UML Models
PDF
TextUML Toolkit
PDF
Model Driven Prototyping
Restful APIs com Spring 3
Refatorando o software corporativo
Cloudfier business pitch deck
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
Modernização de Sistemas de Gestão
Code generation
Separando arquitetura e negócios em sistemas de gestão
11 Dogmas of model driven development
AlphaSimple product pitch
MDD with Executable UML Models
TextUML Toolkit
Model Driven Prototyping
Anúncio

Semelhante a TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos (20)

PDF
Construindo um micro-serviço Java 100% funcional em 15 minutos
PDF
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
PDF
Introdução a Plataforma Java EE
PDF
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
PDF
JavaEE 7, na era do cloud computing
PPT
Google AppEngine and JEE
PDF
Os 5 Níveis de Reuso
PPTX
Criando uma arquitetura escalável para processamento de arquivos com micro s...
ODP
TDC 2012 - JDF
PDF
Arquiteturas Java EE no Google App Engine
PDF
Tem gente demais mexendo no APP!
PDF
Introducao Spring ROO
PDF
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
PPT
Design patterns e tecnologias para modularização em java tdc2014
PDF
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
PPTX
Garantindo a qualidade da sua API REST com Behave
PDF
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
PDF
TDC2016SP - Dark Launching: Minimizando os riscos de alterações críticas em p...
PDF
TDC2008 Integração Contínua
PDF
TDC2016SP - Trilha BigData
Construindo um micro-serviço Java 100% funcional em 15 minutos
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
Introdução a Plataforma Java EE
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
JavaEE 7, na era do cloud computing
Google AppEngine and JEE
Os 5 Níveis de Reuso
Criando uma arquitetura escalável para processamento de arquivos com micro s...
TDC 2012 - JDF
Arquiteturas Java EE no Google App Engine
Tem gente demais mexendo no APP!
Introducao Spring ROO
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
Design patterns e tecnologias para modularização em java tdc2014
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
Garantindo a qualidade da sua API REST com Behave
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
TDC2016SP - Dark Launching: Minimizando os riscos de alterações críticas em p...
TDC2008 Integração Contínua
TDC2016SP - Trilha BigData

Último (12)

PPT
06_slide de Arquitetura_de_Software .ppt
PPT
05_slide especificacao de sistemas de software e a uml UML.ppt
PDF
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
PDF
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
PPT
10_ slides de Reuso sommerville cap 10.ppt
PDF
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
PPT
09_Evolucao de software e_Refatoracao.ppt
PPT
03_slide de Gerenciamento de Projetos .ppt
PDF
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
PPT
07_slides de Estilos_Arquiteturais sommerville.ppt
PPT
00_Apresentacao sobre o livro do sommerville_ES.ppt
PDF
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
06_slide de Arquitetura_de_Software .ppt
05_slide especificacao de sistemas de software e a uml UML.ppt
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
10_ slides de Reuso sommerville cap 10.ppt
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
09_Evolucao de software e_Refatoracao.ppt
03_slide de Gerenciamento de Projetos .ppt
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
07_slides de Estilos_Arquiteturais sommerville.ppt
00_Apresentacao sobre o livro do sommerville_ES.ppt
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB

TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos