60
Separando Arquitetura e Negócios em Sistemas de Gestão Rafael Chaves http://abstratt.com [email protected] twitter: @abstratt

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

Embed Size (px)

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.

Citation preview

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

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

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

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

Quais os maiores problemas do desenvolvimento de software de

gestão?

Page 5: Separando arquitetura e negócios em sistemas 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Problema

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

Arquitetura e Negócio são completamente diferentes

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

Arquitetura e Negócio requerem linguagens diferentes

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

Arquitetura e Negócio requerem talentos diferentes

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

Arquitetura e Negócio provêemvalores diferentes

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

Arquitetura e Negócio são completamente independentes

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

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

POR QUÊ?

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

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

Demonstração

Page 33: Separando arquitetura e negócios em sistemas de gestã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

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

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

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

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

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

Modelos Executáveis

Arquitetura definida externamente,aplicada automaticamente

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

“Programando"

modelos executáveis

com Cloudfier

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

Negócio

Tecnologia

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

Tecnologia

ManualNegócio

Automático

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

EntitiesRelationshipsConstraints

ActionsStatesEvents

ServicesRoles

Tecnologia

Manual

Automático

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

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

STRUCTURE

Entities

Properties

Relationships

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

BEHAVIOR AND RULES

Actions

Constraints

Derivations

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

DYNAMICS

State machines

Triggers

Signals / Events

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

INTEGRATION

Components

Ports

Services

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

REST API

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

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

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

CUSTOM UI

Page 52: Separando arquitetura e negócios em sistemas de gestão
Page 53: Separando arquitetura e negócios em sistemas de gestão
Page 54: Separando arquitetura e negócios em sistemas de gestão

Revisando

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

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

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

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

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

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

Separando Arquitetura e Domínio em Sistemas de

Gestão

Rafael Chaveshttp://abstratt.com

[email protected]: @abstratt