SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
Separando Arquitetura e
Negócios em Sistemas de
Gestão
Rafael Chaves
http://abstratt.com
rafael@abstratt.com
twitter: @abstratt
Palestrante
● Formação
○ bacharel (2000) e mestre (2004) em Computação
(UFSC)
● Experiência
○ Perfil/Datasul CRM (2001-2002)
○ OTI/IBM Canada: Eclipse (2002-2005)
○ IBM Canada: Jazz/Team Concert (2005-2006)
○ Genologics: Desenv. Senior/Arquiteto (2008-2012)
● Hoje
○ Desenvolvendo Cloudfier (2012-)
○ Consultor em Engenharia de Software (2013-)
Desenvolvimento de aplicações de negócios é
extremamente ineficiente
A solução é tratar negócio e tecnologia
separadamente
Demonstração
Modelos executáveis como mecanismo para
separação entre negócio e tecnologia
Discussão / comentários / perguntas*
Visão geral
Quais os maiores problemas do
desenvolvimento de software de
gestão?
a) Custo de implementar um novo requisito de negócio,
mesmo que relativamente simples, ainda é muito alto
b) Arquitetura se torna ultrapassada rapidamente, difícil
mantê-la atualizada
c) Profissionais ficam defasados rapidamente, difícil manter-
se atualizado
d) Muito tempo e dinheiro gasto com tecnologia, quando o
que devia importar é o negócio
e) ...
Problemas em desenvolvimento de
software de gestão
Sistemas de Gestão
Conhecimento do negócio
(domínio do problema)
+
Arquitetura (tecnologia)
Sistema de Contabilidade em Cobol
Sistema de Controle de Estoque em Delphi
Sistema de Gestão de Relacionamento com
Clientes (CRM) em Java
Sistema de Compras em .Net
Exemplos
Arquitetura (tecnologia)
●linguagens de programação (Java, C#, Ruby)
●interface com usuário (HTML, Swing, WinForms)
●integração (SOAP, REST, CORBA, JMS, sockets)
●persistência (SQL, No-SQL, prevalence)
●ambiente operacional (hardware, SO, rede etc)
●paralelismo, transações, distribuição, logging,
auditoria, síncrono vs. assíncrono, local vs. remoto, ativo
vs. passivo…
Definindo dois universos diferentes
Definindo dois universos diferentes
Conhecimento do negócio
● entendimento do domínio do problema (jurídico, obras, ...)
● necessidades dos clientes (o que é ou não importante)
● como atendê-las (solução conceitual)
Comparando dois universos diferentes
Arquitetura (tecnologia)
●custo de se construir solução concreta (o "meio")
●não é diferencial competitivo significativo (commodity)
●independente de domínio
●trivial, bem compreendida, padronizada, repetitiva
●estabilidade: volátil (um a dois anos)
●linguagem: bem servidas pelas linguagens técnicas
convencionais
Comparando dois universos diferentes
Conhecimento do negócio
●a essência do valor da solução (o "fim")
●diferencial competitivo
●independente de tecnologia
●estabilidade: depende do domínio
●linguagem: linguagens técnicas convencionais deixam a
desejar
Empresas de software de gestão
não são empresas de tecnologia,
são empresas especializadas em
gestão de negócios
(valor produzido vs. instrumento aplicado)
Implementando Sistemas de Gestão
(idealmente)
Conhecimento do negócio
(domínio do problema)
+
Tecnologia (arquitetura)
(Custo Total = Custo N + Custo A)
Implementando Sistemas de Gestão
(na prática)
Conhecimento do negócio
(domínio do problema)
X
Tecnologia (arquitetura)
(Custo Total = Custo N * Custo A)
Implementando Sistemas de Gestão
(na prática)
Cliente, Produto, Pedido,
Pagamento...
X
Classe de domínio, Repositório,
Serviço, tabela do BD,
representação API, ...
Implementando Sistemas de Gestão
(na prática)
Classe de domínio Produto
Classe repositório Produto
Classe serviço Produto
Tabela Produto
Representação XML Produto
API Produto
...
Implementando Sistemas de Gestão
(na prática)
Classe de domínio Cliente
Classe repositório Cliente
Classe serviço Cliente
Tabela Cliente
Representação XML Cliente
API Cliente
...
Implementando Sistemas de Gestão
(na prática)
Classe de domínio Pedido
Classe repositório Pedido
Classe serviço Pedido
Tabela Pedido
Representação XML Pedido
API Pedido
...
Implementando Sistemas de Gestão
(na prática)
Classe de domínio Pagamento
Classe repositório Pagamento
Classe serviço Pagamento
Tabela Pagamento
Representação XML Pagamento
API Pagamento
...
Implementando Sistemas de Gestão
(na prática)
20 entidades do negócio (N)
x
5 artefatos por entidade (A)
Implementando Sistemas de Gestão
(na prática)
50 entidades do negócio (N)
x
7 artefatos por entidade
Uma nova entidade precisa ser criada
Um novo atributo precisa ser adicionado
Um elemento da arquitetura precisa ser adicionado
Um elemento da arquitetura precisa ser modificado
Um elemento da arquitetura precisa ser removido
O que acontece quando...
Problema
Arquitetura e Negócio são
completamente diferentes
Arquitetura e Negócio requerem
linguagens diferentes
Arquitetura e Negócio requerem
talentos diferentes
Arquitetura e Negócio provêem
valores diferentes
Arquitetura e Negócio são
completamente independentes
Ainda assim,
Arquitetura e Negócio são tratadas:
● pelas mesmas pessoas
● usando as mesmas linguagens
● ao mesmo tempo
POR QUÊ?
Solução: tratar negócio e tecnologia
separadamente
● Com pessoas diferentes
● Usando linguagens diferentes
Demonstração
Modelos Executáveis
Abordagens:
● Executable UML (OMG)
● DSM
Produtos:
● PathfinderMDA, Bridgepoint, MetaEdit+,
Cloudfier*
Adoção:
● Automotiva, Telecom, Defesa, Aeronáutica,
Seguros, Controle e Automação
Modelos Executáveis
Programas minimalistas, focam na essência
(dica: não é a tecnologia)
Modelos Executáveis
Mas completos e precisos sobre o que
interessa
(dica: não é a tecnologia)
Modelos Executáveis
Programas num nível de abstração mais
apropriado (>3GL)
Modelos Executáveis
Plataforma de execução não determina a
ferramenta de desenvolvimento
Modelos Executáveis
Arquitetura definida externamente,
aplicada automaticamente
“Programando"
modelos executáveis
com Cloudfier
Negócio
Tecnologia
Tecnologia
ManualNegócio
Automático
Entities
Relationships
Constraints
Actions
States
Events
Services
Roles
Tecnologia
Manual
Automático
Persistence
Querying
Authorization
REST API
Text search
Integration
Simple UI (or BYOUI)
Authentication
Backups
Scaling
Email notifications
Usage-based billing
Payment processing
Prog. language
Entities
Relationships
Constraints
Actions
States
Events
Services
Roles
Manual
Automático
STRUCTURE
Entities
Properties
Relationships
BEHAVIOR AND RULES
Actions
Constraints
Derivations
DYNAMICS
State machines
Triggers
Signals / Events
INTEGRATION
Components
Ports
Services
REST API
BANCO DE DADOS
select * from "ifrs-cloudfier-examples-meeting"."meeting_User"
id | name | email | username
----+------------------+---------------------+---------------------
6 | David Green | dgreen@tasktop.com |
2 | Andrew Eisenberg | andrew@eclipse.org |
4 | Rafael Chaves | rafael@abstratt.com | rafael@abstratt.com
14 | Test User | test@test.com | test@test.com
(4 rows)
BANCO DE DADOS
d "ifrs-cloudfier-examples-meeting"."meeting_Meeting"
Table "ifrs-cloudfier-examples-meeting.meeting_Meeting"
Column | Type | Modifiers
-------------+-------------------+-----------
id | bigint | not null
title | character varying | not null
description | character varying | not null
date | date | not null
organizer | bigint | not null
Indexes:
"meeting_Meeting_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
"organizer" FOREIGN KEY (organizer) REFERENCES "ifrs-cloudfier-
examples-meeting"."meeting_User"(id) DEFERRABLE INITIALLY DEFERRED
Referenced by:
TABLE ""ifrs-cloudfier-examples-meeting"."meeting_Participation""
CONSTRAINT "meetings" FOREIGN KEY (meetings) REFERENCES "ifrs-cloudfier-
examples-meeting"."meeting_Meeting"(id) ON DELETE CASCADE
CUSTOM UI
Revisando
Solução conceitual
completamente definida
independentemente da arquitetura
●nível de abstração mais adequado
●independência de tecnologia
●portabilidade e reuso
Avaliação de solução conceitual via
interface c/ usuário prototípica
●comunicação entre stakeholders técnicos e do
negócio
●feedback pode ser obtido e incorporado
imediatamente
●iterações sobre a solução conceitual muito mas
eficiente sem envolver tecnologia
Testes de unidade e aceitação
definidos no nível conceitual
● codificação precisa dos requisitos
● validação automática da solução conceitual sem
requerer geração de código
Estratégias de implementação
definidas como mapeamentos
automáticos
●arquitetura “codificada” no gerador de código
●combinação automática de negócio c/ tecnologia
●reuso de decisões técnicas no produto ou entre
produtos
●agilidade na evolução da arquitetura
●próprias ou de terceiros
Referências
Blog
http://abstratt.com/blog/category/editorial/
UML executável
http://www.executableumlbook.com/
http://www.omg.org/spec/FUML/
http://www.omg.org/spec/ALF/
Cloudfier/TextUML
http://cloudfier.com
http://doc.cloudfier.com
http://textuml.org
Separando Arquitetura e
Domínio em Sistemas de
Gestão
Rafael Chaves
http://abstratt.com
rafael@abstratt.com
twitter: @abstratt

Contenu connexe

En vedette

11 Dogmas of model driven development
11 Dogmas of model driven development11 Dogmas of model driven development
11 Dogmas of model driven developmentRafael 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
 
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
 
EXPRESSÕES NUMÉRICAS - Gabarito das expressões numéricas
EXPRESSÕES NUMÉRICAS - Gabarito das expressões numéricasEXPRESSÕES NUMÉRICAS - Gabarito das expressões numéricas
EXPRESSÕES NUMÉRICAS - Gabarito das expressões numéricasOtávio Sales
 

En vedette (7)

11 Dogmas of model driven development
11 Dogmas of model driven development11 Dogmas of model driven development
11 Dogmas of model driven development
 
Code generation
Code generationCode generation
Code generation
 
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
 
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
 
EXPRESSÕES NUMÉRICAS - Gabarito das expressões numéricas
EXPRESSÕES NUMÉRICAS - Gabarito das expressões numéricasEXPRESSÕES NUMÉRICAS - Gabarito das expressões numéricas
EXPRESSÕES NUMÉRICAS - Gabarito das expressões numéricas
 

Similaire à Separando arquitetura e negócios em sistemas de gestão

Dynamics CRM - Mais que uma plataforma de CRM
Dynamics CRM - Mais que uma plataforma de CRMDynamics CRM - Mais que uma plataforma de CRM
Dynamics CRM - Mais que uma plataforma de CRMPedro Azevedo
 
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
 
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Luciano Condé
 
Uma visão geral sobre a plataforma de aplicações
Uma visão geral sobre a plataforma de aplicaçõesUma visão geral sobre a plataforma de aplicações
Uma visão geral sobre a plataforma de aplicaçõesMarkus Christen
 
Mobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosMobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosRodney Repullo
 
Infoschema - Company Overview
Infoschema - Company OverviewInfoschema - Company Overview
Infoschema - Company OverviewRenilton Oliveira
 
Architecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesArchitecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesMarkus Christen
 
CakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeCakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeSpecta TI
 
Service Desk e Customer Care Premier Plataforma Cool Vendor 2016
Service Desk e Customer Care Premier Plataforma Cool Vendor 2016Service Desk e Customer Care Premier Plataforma Cool Vendor 2016
Service Desk e Customer Care Premier Plataforma Cool Vendor 2016Jorge Biesczad Jr.
 
Carreiras Em Computacao E Ti
Carreiras Em Computacao E TiCarreiras Em Computacao E Ti
Carreiras Em Computacao E TiRafael Coutinho
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devopsDiego Pacheco
 
ApresentaçãO Metodologia
ApresentaçãO MetodologiaApresentaçãO Metodologia
ApresentaçãO MetodologiaMarcos Yonamine
 
Apresentação ECM by You Workflow/BPM Resumida
Apresentação ECM by You Workflow/BPM ResumidaApresentação ECM by You Workflow/BPM Resumida
Apresentação ECM by You Workflow/BPM Resumidaguest9e2f3
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Gustavo Malheiros
 

Similaire à Separando arquitetura e negócios em sistemas de gestão (20)

Dynamics CRM - Mais que uma plataforma de CRM
Dynamics CRM - Mais que uma plataforma de CRMDynamics CRM - Mais que uma plataforma de CRM
Dynamics CRM - Mais que uma plataforma de CRM
 
Microsoft Dynamics CRM
Microsoft Dynamics CRMMicrosoft Dynamics CRM
Microsoft Dynamics CRM
 
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
 
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
 
Uma visão geral sobre a plataforma de aplicações
Uma visão geral sobre a plataforma de aplicaçõesUma visão geral sobre a plataforma de aplicações
Uma visão geral sobre a plataforma de aplicações
 
Mobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosMobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para Negocios
 
Ger201
Ger201Ger201
Ger201
 
Infoschema - Company Overview
Infoschema - Company OverviewInfoschema - Company Overview
Infoschema - Company Overview
 
Architecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesArchitecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de Aplicações
 
CakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeCakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, Fake
 
Service Desk e Customer Care Premier Plataforma Cool Vendor 2016
Service Desk e Customer Care Premier Plataforma Cool Vendor 2016Service Desk e Customer Care Premier Plataforma Cool Vendor 2016
Service Desk e Customer Care Premier Plataforma Cool Vendor 2016
 
DDD
DDDDDD
DDD
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Carreiras Em Computacao E Ti
Carreiras Em Computacao E TiCarreiras Em Computacao E Ti
Carreiras Em Computacao E Ti
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devops
 
20141128-Carlos-Eduardo-Capparelli
20141128-Carlos-Eduardo-Capparelli20141128-Carlos-Eduardo-Capparelli
20141128-Carlos-Eduardo-Capparelli
 
ApresentaçãO Metodologia
ApresentaçãO MetodologiaApresentaçãO Metodologia
ApresentaçãO Metodologia
 
Apresentação ECM by You Workflow/BPM Resumida
Apresentação ECM by You Workflow/BPM ResumidaApresentação ECM by You Workflow/BPM Resumida
Apresentação ECM by You Workflow/BPM Resumida
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
 

Separando arquitetura e negócios em sistemas de gestão