separando arquitetura e negócios em sistemas de gestão
DESCRIPTION
Os males do desenvovimento de software de gestão são oriundos da falta de separação entre tecnologia e negócios. Modelos executáveis são uma abordagem para realizar tal separação. Cloudfier é uma ferramenta/plataforma que implementa modelos executáveis em UML.TRANSCRIPT
![Page 1: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/1.jpg)
Separando Arquitetura e Negócios em Sistemas de
Gestão
Rafael Chaveshttp://abstratt.com
[email protected]: @abstratt
![Page 2: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/2.jpg)
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-)
![Page 3: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/3.jpg)
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
![Page 4: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/4.jpg)
Quais os maiores problemas do desenvolvimento de software de
gestão?
![Page 5: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/5.jpg)
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
![Page 6: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/6.jpg)
Sistemas de Gestão
Conhecimento do negócio (domínio do problema)
+Arquitetura (tecnologia)
![Page 7: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/7.jpg)
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
![Page 8: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/8.jpg)
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
![Page 9: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/9.jpg)
Definindo dois universos diferentesConhecimento 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)
![Page 10: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/10.jpg)
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
![Page 11: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/11.jpg)
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
![Page 12: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/12.jpg)
Empresas de software de gestãonão são empresas de tecnologia, são empresas especializadas em
gestão de negócios
(valor produzido vs. instrumento aplicado)
![Page 13: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/13.jpg)
Implementando Sistemas de Gestão(idealmente)
Conhecimento do negócio(domínio do problema)
+Tecnologia (arquitetura)
(Custo Total = Custo N + Custo A)
![Page 14: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/14.jpg)
Implementando Sistemas de Gestão(na prática)
Conhecimento do negócio(domínio do problema)
XTecnologia (arquitetura)
(Custo Total = Custo N * Custo A)
![Page 15: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/15.jpg)
Implementando Sistemas de Gestão(na prática)
Cliente, Produto, Pedido, Pagamento...
XClasse de domínio, Repositório,
Serviço, tabela do BD, representação API, ...
![Page 16: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/16.jpg)
Implementando Sistemas de Gestão(na prática)
Classe de domínio ProdutoClasse repositório Produto
Classe serviço ProdutoTabela Produto
Representação XML ProdutoAPI Produto
...
![Page 17: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/17.jpg)
Implementando Sistemas de Gestão(na prática)
Classe de domínio ClienteClasse repositório Cliente
Classe serviço ClienteTabela Cliente
Representação XML ClienteAPI Cliente
...
![Page 18: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/18.jpg)
Implementando Sistemas de Gestão(na prática)
Classe de domínio PedidoClasse repositório Pedido
Classe serviço PedidoTabela Pedido
Representação XML PedidoAPI Pedido
...
![Page 19: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/19.jpg)
Implementando Sistemas de Gestão(na prática)
Classe de domínio PagamentoClasse repositório Pagamento
Classe serviço PagamentoTabela Pagamento
Representação XML PagamentoAPI Pagamento
...
![Page 20: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/20.jpg)
Implementando Sistemas de Gestão(na prática)
20 entidades do negócio (N)x
5 artefatos por entidade (A)
![Page 21: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/21.jpg)
Implementando Sistemas de Gestão(na prática)
50 entidades do negócio (N)x
7 artefatos por entidade
![Page 22: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/22.jpg)
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...
![Page 23: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/23.jpg)
Problema
![Page 24: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/24.jpg)
Arquitetura e Negócio são completamente diferentes
![Page 25: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/25.jpg)
Arquitetura e Negócio requerem linguagens diferentes
![Page 26: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/26.jpg)
Arquitetura e Negócio requerem talentos diferentes
![Page 27: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/27.jpg)
Arquitetura e Negócio provêemvalores diferentes
![Page 28: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/28.jpg)
Arquitetura e Negócio são completamente independentes
![Page 29: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/29.jpg)
Ainda assim,Arquitetura e Negócio são tratadas:
● pelas mesmas pessoas● usando as mesmas linguagens
● ao mesmo tempo
![Page 30: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/30.jpg)
POR QUÊ?
![Page 31: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/31.jpg)
Solução: tratar negócio e tecnologia separadamente
● Com pessoas diferentes● Usando linguagens diferentes
![Page 32: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/32.jpg)
Demonstração
![Page 33: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/33.jpg)
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
![Page 34: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/34.jpg)
Modelos Executáveis
Programas minimalistas, focam na essência
(dica: não é a tecnologia)
![Page 35: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/35.jpg)
Modelos Executáveis
Mas completos e precisos sobre o que interessa
(dica: não é a tecnologia)
![Page 36: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/36.jpg)
Modelos Executáveis
Programas num nível de abstração mais apropriado (>3GL)
![Page 37: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/37.jpg)
Modelos Executáveis
Plataforma de execução não determina a ferramenta de desenvolvimento
![Page 38: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/38.jpg)
Modelos Executáveis
Arquitetura definida externamente,aplicada automaticamente
![Page 39: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/39.jpg)
“Programando"
modelos executáveis
com Cloudfier
![Page 40: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/40.jpg)
Negócio
Tecnologia
![Page 41: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/41.jpg)
Tecnologia
ManualNegócio
Automático
![Page 42: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/42.jpg)
EntitiesRelationshipsConstraints
ActionsStatesEvents
ServicesRoles
Tecnologia
Manual
Automático
![Page 43: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/43.jpg)
PersistenceQuerying
AuthorizationREST API
Text searchIntegration
Simple UI (or BYOUI)
AuthenticationBackupsScaling
Email notificationsUsage-based billingPayment processing
Prog. language
EntitiesRelationshipsConstraints
ActionsStatesEvents
ServicesRoles
Manual
Automático
![Page 44: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/44.jpg)
STRUCTURE
Entities
Properties
Relationships
![Page 45: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/45.jpg)
BEHAVIOR AND RULES
Actions
Constraints
Derivations
![Page 46: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/46.jpg)
DYNAMICS
State machines
Triggers
Signals / Events
![Page 47: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/47.jpg)
INTEGRATION
Components
Ports
Services
![Page 48: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/48.jpg)
REST API
![Page 49: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/49.jpg)
BANCO DE DADOS
select * from \"ifrs-cloudfier-examples-meeting\".\"meeting_User\"
id | name | email | username ----+------------------+---------------------+--------------------- 6 | David Green | [email protected] | 2 | Andrew Eisenberg | [email protected] | 4 | Rafael Chaves | [email protected] | [email protected] 14 | Test User | [email protected] | [email protected](4 rows)
![Page 50: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/50.jpg)
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 nullIndexes: "meeting_Meeting_pkey" PRIMARY KEY, btree (id)Foreign-key constraints: "organizer" FOREIGN KEY (organizer) REFERENCES "ifrs-cloudfier-examples-meeting"."meeting_User"(id) DEFERRABLE INITIALLY DEFERREDReferenced by: TABLE ""ifrs-cloudfier-examples-meeting"."meeting_Participation"" CONSTRAINT "meetings" FOREIGN KEY (meetings) REFERENCES "ifrs-cloudfier-examples-meeting"."meeting_Meeting"(id) ON DELETE CASCADE
![Page 51: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/51.jpg)
CUSTOM UI
![Page 52: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/52.jpg)
![Page 53: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/53.jpg)
![Page 54: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/54.jpg)
Revisando
![Page 55: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/55.jpg)
Solução conceitual completamente definida
independentemente da arquitetura
● nível de abstração mais adequado● independência de tecnologia
● portabilidade e reuso
![Page 56: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/56.jpg)
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
![Page 57: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/57.jpg)
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
![Page 58: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/58.jpg)
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
![Page 59: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/59.jpg)
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.comhttp://doc.cloudfier.comhttp://textuml.org
![Page 60: Separando arquitetura e negócios em sistemas de gestão](https://reader033.vdocuments.site/reader033/viewer/2022042815/558654e6d8b42a221b8b45f5/html5/thumbnails/60.jpg)
Separando Arquitetura e Domínio em Sistemas de
Gestão
Rafael Chaveshttp://abstratt.com
[email protected]: @abstratt