Click here to load reader
Upload
rachaves
View
380
Download
2
Embed Size (px)
DESCRIPTION
Presentation in Portuguese on the need for dealing with domain and technical concerns separately when developing enterprise software.
Citation preview
Refatorando o software corporativo
Rafael ChavesAbstratt Technologies
http://abstratt.comtwitter: @abstratt
Software corporativo
Conhecimento do negócio + Tecnologia
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...
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)
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
Problema
As necessidades do negócio e da tecnologiarequerem tratamento distinto e separado.
Negócio e Tecnologiatêm natureza completamente diferentes.
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)
Demo
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/