Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

582 views

Published on

Palestra apresentada no TDC Floripa 2015.

Published in: Software
  • Be the first to comment

  • Be the first to like this

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)

×