68
Desenvolvendo Sistemas de Gestão com Modelos Executáveis Rafael Chaves (@abstratt) [email protected] http://abstratt.com

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

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

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

Protocolode comunicação

Segurança

Linguagem de programação

Entidades

Eventos

Restrições

ConsultasAções

Estados

Transições

Relacionamentos

Atributos

Como é na prática...

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, ao resgate!

Modelos executáveis?

Modelos executáveis são Modelos ✓

Modelos executáveis são Programas ✓

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)

Modelos executáveis promovem uma

separação completa entre

negócio e tecnologia

Domínio do negócio vs. Arquitetura

Domínio = coresArquitetura = formas

Sem modelos executáveis

Domínio = coresArquitetura = formas

Artefato = forma colorida

Com modelos executáveis

Arquitetura codificada

na plataformaou

gerador de código

Domínio do negócio codificado como

modelo executável

Artefatos sãodescartá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● Carros ficam indisponíveis enquanto

alugados ou em reparo

Validação inicial por usuários/analistas de negócio

Testes automatizados

Modelagem

ModelagemProgramaçã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 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)

Cloudfier como plataforma

Cloudfier como IDE

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!

Detalhes da geração de código

Geração baseada em estrutura

ClassesAttributes Operations (signatures)AssociationsOther classifiers (enumerations, signals etc)Default values/derivations

Geração baseada em máquinas de estado

StatesTransitionsTriggersGuardsEntry/exit/do activities

Geração baseada em Atividades

ActivitiesActions Input and output pinsObject flows

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

operation deposit(depositedAmount : Decimal) { this.balance = this.balance + depositedAmount;}

Plain Java

Plain Javascript

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)