9

Click here to load reader

Refatorando o software corporativo

Embed Size (px)

DESCRIPTION

Presentation in Portuguese on the need for dealing with domain and technical concerns separately when developing enterprise software.

Citation preview

Page 1: Refatorando o software corporativo

Refatorando o software corporativo

Rafael ChavesAbstratt Technologies

http://abstratt.comtwitter: @abstratt

Page 2: Refatorando o software corporativo

Software corporativo

Conhecimento do negócio + Tecnologia

Page 3: Refatorando o software corporativo

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)

Tecnologia● interface com usuário (HTML, Swing, WinForms)● middleware (SOAP, REST, CORBA, JMS, sockets) ● gerenciamento de dados (SQL, No-SQL, prevalence)● linguagens de programação (Java, Delphi, RoR, PL-SQL)● ambiente operacional (hardware, SO, rede etc)● paralelismo, transações, distribuição, logging,

auditing, síncrono vs. assíncrono, local vs. remoto, ativo vs. passivo...

Page 4: Refatorando o software corporativo

Comparando dois universos diferentes

Conhecimento do negócio● a essência do valor da solução (o "fim")● diferencial competitivo● independente de tecnologia ● estabilidade: variável, mesmo que domínio

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)

Page 5: Refatorando o software corporativo

Cenário típico● requisitos espalhados, em forma não estruturada, imprecisa,

incompleta (documento Word, wiki, sistema de tickets, emails)

● solução conceitual em modelos UML imprecisos/incompletos/desatualizados ou perdida no código

● solução conceitual só pode ser validada após construção

● mudanças de natureza conceitual requerem muito esforço para se identificar a "intenção" do código existente

● mudanças de natureza técnica têm grande impacto na aplicação (afetam vários artefatos), normalmente feitas parcialmente

● inconsistência impera

Checkpoint

Page 6: Refatorando o software corporativo

Problema

As necessidades do negócio e da tecnologiarequerem tratamento distinto e separado.

Negócio e Tecnologiatêm natureza completamente diferentes.

Page 7: Refatorando o software corporativo

Solução● solução conceitual é completamente definida antes da

implementação

● linguagem própria para solução conceitual (nível de abstração mais adequado, independência de tecnologia)

● testes de unidade e aceitação definidos no nível conceitual (codificação precisa dos requisitos)

● avaliação de solução conceitual via protótipo (comunicação entre stakeholders técnicos e do negócio)

● estratégias de implementação definidas como mapeamentos automáticos (reuso de decisões técnicas, agilidade na evolução da arquitetura)

Page 8: Refatorando o software corporativo

Demo

Page 9: Refatorando o software corporativo

Referências

Bloghttp://abstratt.com/blog/category/editorial/

AlphaSimplehttp://alphasimple.com/

Lista de ferramentas com suporte a xUMLhttp://modeling-languages.com/list-of-executable-uml-tools/