Upload
rachaves
View
108
Download
0
Embed Size (px)
Citation preview
Desenvolvendo Sistemas de Gestão com Modelos
Executáveis
Rafael Chaves (@abstratt)[email protected]://abstratt.com
Roteiro
Modelos executáveisO quê? Por quê? Como?
CloudfierServiço, projeto de código aberto
Geração de código c/ modelos executáveis
Baseado em estrutura, máquinas de estado e atividades
Conhecimento do negócio
Gerenciamento de memória
Persistência
CacheamentoTransações
Serialização
Concorrência
Integração
Protocolode comunicação
Segurança
Linguagem de programação
Entidades
Eventos
Restrições
ConsultasAções
Estados
Transições
Relacionamentos
Atributos
Conhecimento do negócio
Gerenciamento de memória
Persistência
CacheamentoTransações
Serialização
Concorrência
Integração
Protocolode comunicação
Segurança
Linguagem de programação
Modelos executáveis sãomodelos mas...
Precisos(tanto quanto necessário)
Completos(sobre o que interessa)
Modelos executáveis sãoprogramas mas...
Focados(no domínio do problema)
Livres(de escolhas tecnológicas)
Com modelos executáveis
Arquitetura codificada
na plataformaou
gerador de código
Domínio do negócio codificado como
modelo executável
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
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
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)
Status
● Iniciado em 2012● Foco inicial:
o ambiente de desenvolvimento, plataforma de execução e prototipação
● Foco atual: geração de códigoo JavaEE em desenvolvimento, em busca de usuárioso Java SE como referênciao Javascript/MEAN na prateleirao Gerador para XYZ? Faça o seu!
Geração baseada em estrutura
ClassesAttributes Operations (signatures)AssociationsOther classifiers (enumerations, signals etc)Default values/derivations
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
ReferênciasBloghttp://abstratt.com/blog/
Cloudfier/TextUMLhttp://doc.cloudfier.comhttp://github.com/abstratt/cloudfierhttp://abstratt.com/textuml
Executable UMLhttp://www.executableumlbook.com/http://www.omg.org/spec/FUML/http://www.omg.org/spec/ALF/
Desenvolvendo Sistemas de Gestão com Modelos
Executáveis
Rafael Chaves (@abstratt)[email protected]://abstratt.com
PersistenceQuerying
AuthorizationREST API
Text searchIntegration
User interfaceLogging
AuthenticationBackupsScaling
Email notificationsUsage-based billingPayment processing
Prog. language
Arquitetura(definida pelo arquiteto
e aplicada automaticamente via plataforma ou gerador
de código)
EntitiesRelationshipsConstraints
Operations and queriesStatesEvents
ServicesRoles
Domínio do problema
(manualmente pelos programadores de aplicação)