Desenvolvendo Sistemas
de Gestão com Modelos
Executáveis
Rafael Chaves (@abstratt)
rafael@abstratt.com
http://abstratt.com
Roteiro
Modelos executáveis
O quê? Por quê? Como?
Cloudfier
Serviço, projeto de código aberto
Geração de código c/ modelos...
Motivação
Sistemas de gestão
Conhecimento do negócio
+
Tecnologia aplicada
Como deveria ser...
Conhecimento do negócio
Gerenciamento de memória
Persistência
CacheamentoTransações
Serialização
Concorrência
Integração
P...
Como é na prática...
Conhecimento do negócio
Gerenciamento de
memória
Persistência
CacheamentoTransações
Serialização
Concorrência
Integração
P...
Modelos Executáveis,
ao resgate!
Modelos executáveis?
Modelos executáveis são Modelos ✓
Modelos executáveis são Programas ✓
Modelos executáveis são
modelos mas...
Precisos
(tanto quanto necessário)
Completos
(sobre o que interessa)
Modelos executáveis são
programas mas...
Focados
(no domínio do problema)
Livres
(de escolhas tecnológicas)
Modelos executáveis
promovem uma
separação completa
entre
negócio e tecnologia
Domínio do negócio vs. Arquitetura
Domínio = cores
Arquitetura = formas
Sem modelos executáveis
Domínio = cores
Arquitetura = formas
Artefato = forma colorida
Com modelos executáveis
Arquitetura
codificada
na plataforma
ou
gerador de código
Domínio do negócio
codificado como
model...
Artefatos são
descartáveis!
Com modelos executáveis
Demonstração com Cloudfier
A aplicação exemplo:
uma locadora de carros
● Carros, Clientes, Locações
● Clientes só podem locar um carro por vez
● Carr...
Validação inicial por
usuários/analistas de negócio
Testes automatizados
Modelagem
Modelagem
Programação em UML
Back-end automático
Geração de código
Cloudfier
● Ambiente de desenvolvimento baseado em
modelos executáveis: http://cloudfier.com
● UML como linguagem de model...
Cloudfier OSS
● Código-aberto (parte EPL, parte AGPL)
● Disponível no Github:
http://github.com/abstratt/cloudfier
● servi...
Cloudfier como plataforma
Cloudfier como IDE
Status
● Iniciado em 2012
● Foco inicial:
o ambiente de desenvolvimento, plataforma de execução e
prototipação
● Foco atua...
Detalhes da geração de código
Geração baseada em estrutura
Classes
Attributes
Operations (signatures)
Associations
Other classifiers (enumerations, sign...
Geração baseada em máquinas de
estado
States
Transitions
Triggers
Guards
Entry/exit/do activities
Geração baseada em Atividades
Activities
Actions
Input and output pins
Object flows
Ações disponíveis
●read/write variable
●create/destroy object
●read self ("this")
●read/write attribute
●create/destroy li...
operation deposit(depositedAmount : Decimal) {
this.balance = this.balance + depositedAmount;
}
Plain Java
Plain Javascript
Referências
Blog
http://abstratt.com/blog/
Cloudfier/TextUML
http://doc.cloudfier.com
http://github.com/abstratt/cloudfier...
Desenvolvendo Sistemas
de Gestão com Modelos
Executáveis
Rafael Chaves (@abstratt)
rafael@abstratt.com
http://abstratt.com
Persistence
Querying
Authorization
REST API
Text search
Integration
User interface
Logging
Authentication
Backups
Scaling
...
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
Próximos SlideShares
Carregando em…5
×

TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis

549 visualizações

Publicada em

Palestra apresentada no TDC Floripa 2015.

Publicada em: Software
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis

  1. 1. Desenvolvendo Sistemas de Gestão com Modelos Executáveis Rafael Chaves (@abstratt) rafael@abstratt.com http://abstratt.com
  2. 2. Roteiro Modelos executáveis O quê? Por quê? Como? Cloudfier Serviço, projeto de código aberto Geração de código c/ modelos executáveis Baseado em estrutura, máquinas de estado e atividades
  3. 3. Motivação
  4. 4. Sistemas de gestão Conhecimento do negócio + Tecnologia aplicada
  5. 5. Como deveria ser...
  6. 6. Conhecimento do negócio Gerenciamento de memória Persistência CacheamentoTransações Serialização Concorrência Integração Protocolo de comunicação Segurança Linguagem de programação Entidades Eventos Restrições Consultas Ações Estados Transições Relacionamentos Atributos
  7. 7. Como é na prática...
  8. 8. Conhecimento do negócio Gerenciamento de memória Persistência CacheamentoTransações Serialização Concorrência Integração Protocolo de comunicação Segurança Linguagem de programação
  9. 9. Modelos Executáveis, ao resgate!
  10. 10. Modelos executáveis?
  11. 11. Modelos executáveis são Modelos ✓ Modelos executáveis são Programas ✓
  12. 12. Modelos executáveis são modelos mas... Precisos (tanto quanto necessário) Completos (sobre o que interessa)
  13. 13. Modelos executáveis são programas mas... Focados (no domínio do problema) Livres (de escolhas tecnológicas)
  14. 14. Modelos executáveis promovem uma separação completa entre negócio e tecnologia
  15. 15. Domínio do negócio vs. Arquitetura Domínio = cores Arquitetura = formas
  16. 16. Sem modelos executáveis Domínio = cores Arquitetura = formas Artefato = forma colorida
  17. 17. Com modelos executáveis Arquitetura codificada na plataforma ou gerador de código Domínio do negócio codificado como modelo executável
  18. 18. Artefatos são descartáveis! Com modelos executáveis
  19. 19. Demonstração com Cloudfier
  20. 20. A aplicação exemplo: uma locadora de carros ● Carros, Clientes, Locações ● Clientes só podem locar um carro por vez ● Carros ficam indisponíveis enquanto alugados ou em reparo
  21. 21. Validação inicial por usuários/analistas de negócio
  22. 22. Testes automatizados
  23. 23. Modelagem
  24. 24. Modelagem Programação em UML
  25. 25. Back-end automático
  26. 26. Geração de código
  27. 27. Cloudfier ● Ambiente de desenvolvimento baseado em modelos executáveis: http://cloudfier.com ● UML como linguagem de modelagem ● Mas via notação textual ● Em alfa/beta, gratuito, feedback bem-vindo
  28. 28. Cloudfier OSS ● Código-aberto (parte EPL, parte AGPL) ● Disponível no Github: http://github.com/abstratt/cloudfier ● servidor: Java / Eclipse Runtime / UML2 / Xtend ● front-end o IDE: Orion (Javascript) o GUI e protótipo: Qooxdoo (Javascript)
  29. 29. Cloudfier como plataforma
  30. 30. Cloudfier como IDE
  31. 31. Status ● Iniciado em 2012 ● Foco inicial: o ambiente de desenvolvimento, plataforma de execução e prototipação ● Foco atual: geração de código o JavaEE em desenvolvimento, em busca de usuários o Java SE como referência o Javascript/MEAN na prateleira o Gerador para XYZ? Faça o seu!
  32. 32. Detalhes da geração de código
  33. 33. Geração baseada em estrutura Classes Attributes Operations (signatures) Associations Other classifiers (enumerations, signals etc) Default values/derivations
  34. 34. Geração baseada em máquinas de estado States Transitions Triggers Guards Entry/exit/do activities
  35. 35. Geração baseada em Atividades Activities Actions Input and output pins Object flows
  36. 36. Ações disponíveis ●read/write variable ●create/destroy object ●read self ("this") ●read/write attribute ●create/destroy link ●call operation ●structured node (blocks) ●test identity ●conditional (if/switch) ●loop (for/while) ●raise exception ●send signal
  37. 37. operation deposit(depositedAmount : Decimal) { this.balance = this.balance + depositedAmount; }
  38. 38. Plain Java Plain Javascript
  39. 39. Referências Blog http://abstratt.com/blog/ Cloudfier/TextUML http://doc.cloudfier.com http://github.com/abstratt/cloudfier http://abstratt.com/textuml Executable UML http://www.executableumlbook.com/ http://www.omg.org/spec/FUML/ http://www.omg.org/spec/ALF/
  40. 40. Desenvolvendo Sistemas de Gestão com Modelos Executáveis Rafael Chaves (@abstratt) rafael@abstratt.com http://abstratt.com
  41. 41. Persistence Querying Authorization REST API Text search Integration User interface Logging Authentication Backups Scaling Email notifications Usage-based billing Payment processing Prog. language Arquitetura (definida pelo arquiteto e aplicada automaticamente via plataforma ou gerador de código) Entities Relationships Constraints Operations and queries States Events Services Roles Domínio do problema (manualmente pelos programadores de aplicação)

×