Modelos executáveis permitem separar completamente o domínio do negócio da tecnologia subjacente, codificando o conhecimento do negócio como modelos precisos e completos e gerando automaticamente código a partir desses modelos usando plataformas ou geradores de código. A ferramenta Cloudfier demonstra essa abordagem, permitindo modelar uma locadora de carros em UML e gerar automaticamente um back-end funcional para teste e prototipação.
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
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
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
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. 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)
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!
68. 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)