SlideShare a Scribd company logo
1 of 68
Download to read offline
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 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
Protocolo
de comunicação
Segurança
Linguagem de
programação
Entidades
Eventos
Restrições
Consultas
Açõ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
Protocolo
de 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ã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
modelo executável
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
● Carros ficam indisponíveis enquanto
alugados ou em reparo
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 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ó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!
Detalhes da geração de código
Geração baseada em estrutura
Classes
Attributes
Operations (signatures)
Associations
Other classifiers (enumerations, signals etc)
Default values/derivations
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
Geração baseada em máquinas de
estado
States
Transitions
Triggers
Guards
Entry/exit/do activities
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
Geração baseada em Atividades
Activities
Actions
Input and output pins
Object flows
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis
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
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
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/
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
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)

More Related Content

What's hot

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...Rogério Moraes de Carvalho
 
O que é framework
O que é frameworkO que é framework
O que é frameworkfcdigital
 
Palestra: LINQ via C#
Palestra: LINQ via C# Palestra: LINQ via C#
Palestra: LINQ via C# Thiago Vidal
 
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio TorresPrincípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio TorresTchelinux
 

What's hot (7)

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Minicurso jsf2.0
Minicurso jsf2.0Minicurso jsf2.0
Minicurso jsf2.0
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
 
O que é framework
O que é frameworkO que é framework
O que é framework
 
Palestra: LINQ via C#
Palestra: LINQ via C# Palestra: LINQ via C#
Palestra: LINQ via C#
 
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio TorresPrincípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
 
es6
es6es6
es6
 

Viewers also liked

Refatorando o software corporativo
Refatorando o software corporativoRefatorando o software corporativo
Refatorando o software corporativoRafael Chaves
 
Modernização de Sistemas de Gestão
Modernização de Sistemas de GestãoModernização de Sistemas de Gestão
Modernização de Sistemas de GestãoRafael Chaves
 
TDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestraTDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestraRafael Chaves
 
Cloudfier business pitch deck
Cloudfier business pitch deckCloudfier business pitch deck
Cloudfier business pitch deckRafael Chaves
 
Separando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestãoSeparando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestãoRafael Chaves
 
AlphaSimple product pitch
AlphaSimple product pitchAlphaSimple product pitch
AlphaSimple product pitchRafael Chaves
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
11 Dogmas of model driven development
11 Dogmas of model driven development11 Dogmas of model driven development
11 Dogmas of model driven developmentRafael Chaves
 
MDD with Executable UML Models
MDD with Executable UML ModelsMDD with Executable UML Models
MDD with Executable UML ModelsRafael Chaves
 
Model Driven Prototyping
Model Driven PrototypingModel Driven Prototyping
Model Driven PrototypingRafael Chaves
 

Viewers also liked (12)

Refatorando o software corporativo
Refatorando o software corporativoRefatorando o software corporativo
Refatorando o software corporativo
 
Modernização de Sistemas de Gestão
Modernização de Sistemas de GestãoModernização de Sistemas de Gestão
Modernização de Sistemas de Gestão
 
TDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestraTDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestra
 
Cloudfier business pitch deck
Cloudfier business pitch deckCloudfier business pitch deck
Cloudfier business pitch deck
 
Separando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestãoSeparando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestão
 
Code generation
Code generationCode generation
Code generation
 
AlphaSimple product pitch
AlphaSimple product pitchAlphaSimple product pitch
AlphaSimple product pitch
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
11 Dogmas of model driven development
11 Dogmas of model driven development11 Dogmas of model driven development
11 Dogmas of model driven development
 
MDD with Executable UML Models
MDD with Executable UML ModelsMDD with Executable UML Models
MDD with Executable UML Models
 
TextUML Toolkit
TextUML ToolkitTextUML Toolkit
TextUML Toolkit
 
Model Driven Prototyping
Model Driven PrototypingModel Driven Prototyping
Model Driven Prototyping
 

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

Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
CakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeCakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeSpecta TI
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B Rguestb9d145
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindJaydson Gomes
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoÉberli Cabistani Riella
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologiaselliando dias
 
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisSimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisCaio Ribeiro Pereira
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010Norton Guimarães
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1michellobo
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G Ofabio.thomaz
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Luciano Condé
 

Similar to TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Executáveis (20)

Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
CakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeCakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, Fake
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMind
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisSimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Xamarin UI Test + BDD Specflow
Xamarin UI Test + BDD SpecflowXamarin UI Test + BDD Specflow
Xamarin UI Test + BDD Specflow
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G O
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4
 

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