<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>timeBox &#187; Arquitetura</title>
	<atom:link href="http://www.timebox.com.br/category/arquitetura/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.timebox.com.br</link>
	<description>5 minutos de software</description>
	<lastBuildDate>Mon, 05 Apr 2010 20:49:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Modelar direito da lucro</title>
		<link>http://www.timebox.com.br/2010/04/05/modelar-direito-da-lucro/</link>
		<comments>http://www.timebox.com.br/2010/04/05/modelar-direito-da-lucro/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 20:49:46 +0000</pubDate>
		<dc:creator>Marcelo C. Araujo</dc:creator>
				<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[Desenvolvimento Ágil]]></category>
		<category><![CDATA[Modelagem Ágil]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://www.timebox.com.br/?p=128</guid>
		<description><![CDATA[Em 2005 eu fiz um curso de extensão na PUC-Rio, que se baseou no livro UML Components, publicado em 2000. O foco do livro e obviamente do curso, era em Component-Based Design, identificação e projeto de componentes de negócio, usando uma técnica calcada em UML.
Foi na época desse curso que comecei a ver valor em [...]]]></description>
			<content:encoded><![CDATA[<p>Em 2005 eu fiz um curso de extensão na PUC-Rio, que se baseou no livro <a href="http://www.amazon.com/UML-Components-Specifying-Component-Based-Software/dp/0201708515/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1270498789&#038;sr=1-1">UML Components</a>, publicado em 2000. O foco do livro e obviamente do curso, era em Component-Based Design, identificação e projeto de componentes de negócio, usando uma técnica calcada em UML.<br />
Foi na época desse curso que comecei a ver valor em alguns outros temas que eu já havia estudado, mas não conseguia ver tanta aplicação prática, como o uso de OO na modelagem de sistemas e o conceito de reuso. No entanto, o que mais me chamou atenção no curso e mudou minha forma de pensar sobre desenvolvimento de software, foi o fato de modelar classes e sub-sistemas com base no que eles representavam no mundo real, no processo de negócio do cliente.</p>
<p>Em 2007 comecei a ter contato com metodologias ágeis e com SOA, tudo de forma muito tímida ainda, lendo <a href="http://www.amazon.com/Agile-Modeling-Effective-Practices-Programming/dp/0471202827/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1270498856&#038;sr=1-1">isso</a>, <a href="http://www.amazon.com/Service-Oriented-Architecture-SOA-Concepts-Technology/dp/0131858580/ref=ntt_at_ep_dpi_2">aquilo</a>, mas o suficiente pra constatar 3 coisas:</p>
<p>1 &#8211; Eu não precisava “modelar tudo em UML” pra depois programar de novo em algo que compilasse.<br />
2 – Testes automatizados são tão importantes, mas tão importantes, que até pra modelar servem.<br />
3 &#8211; SOA segue adiante o caminho iniciado pelo Component-Based Design, dando mais foco no negócio e com uma visão mais corporativa.</p>
<p>Em 2008 comecei a ver alguma coisa de Domain-Driven Design na internet. Mesmo sendo um cara que “curte” modelagem, não dei muita importância. Achava que era apenas um novo nome para uma mistura de CBD com SOA. Só lendo o livro do <a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1270499085&#038;sr=1-1">Evans </a>em 2009, que foi publicado em 2003, é que passei a ver benefícios com DDD, devido à forma como o autor amarrou e organizou uma serie de conceitos e técnicas úteis a modelagem de domínio.</p>
<p>Estamos em 2010.<br />
Perceberam alguma coisa? Não?</p>
<p>Eu sou um cara técnico, curto modelagem de software e não é raro eu estar lendo algo sobre isso. Mesmo assim, só fui conhecer em 2005, algo que já existia desde 2000 e só fui entender em 2007/2009 coisas que começaram em 2003.</p>
<p>Eu curto estudar assuntos técnicos sobre modelagem.<br />
Mas isso não evitou que eu acumulasse <a href="http://www.infoq.com/br/news/2009/10/dissecting-technical-debt">débitos técnicos</a> por anos!</p>
<p>Agora imagine o seu gerente e o gerente do seu gerente. Provavelmente eles não sabem o que significam 10% dos termos usados nesse post até agora. </p>
<p>Então, por quê você acha que vai convencê-los a deixar você usar SOA, DDD, TDD, XP, etc, etc&#8230;?<br />
Vou piorar as coisas.<br />
Por que você acha que toda uma empresa vai passar a adotar alguma dessas siglas, bancando custos de treinamento, mudanças culturais e perdas de produtividade iniciais?</p>
<p>Eu não tenho 1 ou 2 anos pra convencer meu gerente de que usar X é legal pra empresa. Pior, ele provavelmente não leu os livros que li nem fez os cursos que fiz, então eu precisaria de mais do que 1 ou 2 anos.<br />
Seu gerente, o gerente do seu gerente e daí por diante, são pessoas que leram outros livros, que tem outras preocupações.<br />
Você precisa falar a língua deles.<br />
Você precisa provar que as suas idéias sobre modelagem de software são rentáveis.</p>
<p><strong>Softwares não nascem ou sofrem modificações “do nada”.</strong></p>
<div id="attachment_130" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.timebox.com.br/wp-content/uploads/2010/04/meta_processo_sistema_post.jpg"><img src="http://www.timebox.com.br/wp-content/uploads/2010/04/meta_processo_sistema_post-300x157.jpg" alt="" title="Clique para ampliar." width="300" height="157" class="size-medium wp-image-130" /></a><p class="wp-caption-text">Esquema de Exemplo - Telecom</p></div>
<p>Imagine uma empresa de telecom com alguns setores específicos.<br />
Essa empresa, assim como qualquer outra, de qualquer outro ramo é movida por processos de negócio e tem metas a serem alcançadas.<br />
Tanto os processos quanto as metas podem ser definidos nos mais altos aos mais baixos níveis de detalhe na empresa.<br />
A figura acima destaca um processo bem macro, chamado “pagamento de conta”. Ela também mostra que existem uma serie de sistemas e serviços, construídos para fazer esse processo fluir.<br />
Se for lançada uma meta visando a diminuição do consumo de papel na empresa e o processo de “pagamento de conta” for um dos que precisam se adequar a meta, alterações em sistemas e serviços legados serão necessárias.<br />
Solicitações serão feitas ao pessoal de TI para atender essa demanda.</p>
<p>Mas, por uma triste coincidência, os sistemas envolvidos estão cheios de dependências cíclicas, redundâncias de lógica de negócio, excesso de responsabilidades e interfaces incoerentes com seus propósitos de negócio.<br />
Sendo assim, sua equipe levou um baita tempo extra só pra entender como os sistemas funcionavam, fora o tempo pra promover as alterações em si. O que alias, acabou gerando mais trabalho, porque como os sistemas não estavam cobertos por testes automatizados, muitos bugs só foram percebidos tardiamente e um loop infinito de “corrige-e-estraga” se formou.</p>
<p>Você consegue mensurar quanto de $$ está sendo gasto atendendo essa demanda?<br />
 Consegue identificar uma relação entre o que está sendo gasto e o que seria gasto, caso as tais “siglas” que você queria colocar na empresa, tivessem sido usadas na construção desses sistemas?</p>
<p>Você consegue achar outros exemplos na sua empresa, que cheguem a conclusões parecidas?</p>
<p>Sim?  Então você consegue provar que investir no que você fala, pode ser uma boa idéia.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.timebox.com.br/2010/04/05/modelar-direito-da-lucro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BPM, SOA e desenvolvimento ágil. É pedir de mais?</title>
		<link>http://www.timebox.com.br/2008/07/31/bpm-soa-e-desenvolvimento-agil-e-pedir-de-mais/</link>
		<comments>http://www.timebox.com.br/2008/07/31/bpm-soa-e-desenvolvimento-agil-e-pedir-de-mais/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 23:31:53 +0000</pubDate>
		<dc:creator>Marcelo C. Araujo</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[Desenvolvimento Ágil]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.timebox.com.br/?p=21</guid>
		<description><![CDATA[Desenvolvimento ágil, aqui no Brasil, virou tema comum em vários blogs e fóruns. Até uma revista especializada nisso nós já temos (Visão Ágil). QUE BOM PRA NÓS desenvolvedores brasileiros.  Mas e o mercado brasileiro? E as grandes consultorias de software que empregam boa parte de nós? É&#8230;.ai a coisa complica um pouco. Colocar em [...]]]></description>
			<content:encoded><![CDATA[<p>Desenvolvimento ágil, aqui no Brasil, virou tema comum em vários blogs e fóruns. Até uma revista especializada nisso nós já temos (Visão Ágil). QUE BOM PRA NÓS desenvolvedores brasileiros.  Mas e o mercado brasileiro? E as grandes consultorias de software que empregam boa parte de nós? É&#8230;.ai a coisa complica um pouco. Colocar em prática princípios de SCRUM, XP, TDD, modelagem ágil e coisa e tal ainda não é muito fácil. Mas isso até tem uma razão de ser.  Diretores de TI costumam ler publicações menos técnicas e essas ainda não estão falando muito dos benefícios (ROI)  que um modelo de desenvolvimento ágil de software pode trazer.  Ainda é preciso fazer esse conhecimento chegar as esferas mais altas do nosso mercado, coisa que já vem acontecendo com outros temas técnicos como BPM e SOA. Hoje em dia acredito que boa parte dos diretores de TI já tem pelo menos alguma ideia do que significa BPM e SOA. Muitos deles já estão inclusive bancando a incorporação de ambos.</p>
<p>No entanto, tenho visto uma certa resistência perante ao uso mais expressivo de técnicas ágeis em equipes que já estão envolvidas em projetos ligados a BPM e SOA.  Muitos argumentam que implantar BPM, SOA e Agile , tudo ao mesmo tempo, seria uma quebra de paradigma muito grande  e de difícil assimilação. </p>
<p>Humm&#8230;.será que é isso tudo?</p>
<p>Ok&#8230;.se você está a séculos desenvolvendo no modelo tradicional (gerente microsoft project/desenvolvimento em cascata/trocentos templates/pouco conhecimento)  ai realmente vai ser dureza mudar tanta coisa ao mesmo tempo. De qualquer forma, não creio que nesse seu estado seja possível fazer um trabalho que atenda as expectativas do seu cliente, ainda mais algo envolvendo BPM e SOA.  Não tem jeito, ou você começa a evoluir ou você começa a evoluir! Aconselho até a esquecer um pouco esses assuntos (BPM e SOA) e arrumar primeiro a sua casa. Mas se você já trabalha com desenvolvimento iterativo,  já pensa em arquitetura, já conhece (de verdade) orientação a objetos, já promove o reuso em seus projetos, já conta com um cliente interessado e conhecedor do processo&#8230;cara, continuar tento tudo isso (e mais um pouco) de forma MAIS ÁGIL não vai te fazer mal algum. </p>
<p><a href="http://www.timebox.com.br/wp-content/uploads/2008/08/bpm_soa_w.png"><img src="http://www.timebox.com.br/wp-content/uploads/2008/08/bpm_soa_w.png" alt="" title="bpm_soa_w" width="453" height="127" class="aligncenter size-full wp-image-22" /></a></p>
<p>O desenvolvimento ágil de software não vai atrapalhar em nada as estratégias do seu cliente ligadas a BPM e quanto a SOA, mesmo tendo que pensar de forma mais corporativa, passando por questões de governança e tudo mais,  uma hora você terá de fazer coisas como ”identificar requisitos, modelar, implementar, testar, entregar”.</p>
<p>Essas “coisas” continuam sendo Desenvolvimento de Software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.timebox.com.br/2008/07/31/bpm-soa-e-desenvolvimento-agil-e-pedir-de-mais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Documento de arquitetura. Quando e pra que.</title>
		<link>http://www.timebox.com.br/2008/07/23/documento-de-arquitetura-quando-e-pra-que/</link>
		<comments>http://www.timebox.com.br/2008/07/23/documento-de-arquitetura-quando-e-pra-que/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 01:05:06 +0000</pubDate>
		<dc:creator>Marcelo C. Araujo</dc:creator>
				<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Documentação]]></category>
		<category><![CDATA[Modelagem Ágil]]></category>

		<guid isPermaLink="false">http://www.timebox.com.br/?p=15</guid>
		<description><![CDATA[Já trabalhei em diversos projetos que continham como parte de sua documentação um SAD (Software Architecture Description)  normalmente criado a partir de um template do RUP. Sem entrar em muitos detalhes, posso dizer que um SAD serve para documentar aspectos arquiteturais de forma geral, fornecendo varias visões complementares sobre o sistema. A ideia é [...]]]></description>
			<content:encoded><![CDATA[<p>Já trabalhei em diversos projetos que continham como parte de sua documentação um SAD (Software Architecture Description)  normalmente criado a partir de um template do RUP. Sem entrar em muitos detalhes, posso dizer que um SAD serve para documentar aspectos arquiteturais de forma geral, fornecendo varias visões complementares sobre o sistema. A ideia é que esse documento vá amadurecendo ao longo do projeto. O iniciamos de forma tímida e o detalhemos melhor a medida em que a arquitetura for ficando mais estável. Dessa forma, teremos um ótimo guia de entendimento arquitetural para futuras equipes que venham a dar manutenção no sistema.</p>
<p>Ok. Vamos produzir SADs em nossos projetos então!<br />
Mas&#8230;.<br />
Porque tendemos a achar que esse documento também é muito bom para comunicar (informar, ensinar) a própria equipe envolvida atualmente no projeto sobre a arquitetura do mesmo? Pergunto isso justamente pelas experiências que tive nos projetos em que o usei. Nesses projetos, o principal movitador de criação do SAD era a ideia de disseminar o conhecimento referente a arquitetura do sistema para os membros da equipe de desenvolvimento, que na maioria das vezes, estavam unidos em um mesmo local.</p>
<p>&#8230;.<br />
Pra falar a verdade, na maioria das vezes a “equipe de desenvovimento” trabalhava remotamente (estratégia “fábrica de código”), então problemas como falha de comunicação, modelagem excessiva e eventualmente atrasos faziam com que a “fábrica” fosse transferida para o mesmo local físico onde ficavam os outros membros da equipe, ou então, os “analistas”, “arquitetos” e demais “especialistas “ acabavam por produzir software de verdade.<br />
&#8230;.</p>
<p>Nosso relacionamento com o SAD acaba sendo mais ou menos assim:<br />
 A equipe de modelagem e o arquiteto se reuniam no inicio do projeto e discutiam a arquitetura base do sistema rabiscando modelos em quadros. A partir dai o arquiteto se responsabilizava pela criação do SAD, como base no que foi discutido na reunião  e por mantê-lo  atualizado durante o desenvolvimento do sistema. Sempre que alguma nova questão arquitetural surgia, ou era alterada, essa informação era passada por e-mail ou através de reuniões rápidas com a equipe, utilizando uma sala com um quadro pra rabiscar ou mesmo uma baia de algum dos desenvolvedores com algumas folhas de papel. Depois disso, o arquiteto arrumava algum tempo pra atualizar o SAD com textos e diagramas UML mais formais.</p>
<p>Agora me diga. Quem mais alem do arquiteto, teve realmente necessidade de manter um contato continuo com o SAD durante o tempo de desenvolvimento do sistema? Ninguém. Então, pra que criar esse documento no inicio do projeto e continuar dando manutenção nele enquanto o sistema ainda está sendo feito, se ele não é a forma mais direta, mais viável, de se comunicar questões arquiteturais pra sua própria equipe?<br />
Seu cliente é que pode precisar dele, no final do projeto, como um guia arquitetural para novos desenvolvedores que possam vir a dar manutenção no sistema. Alias, seu cliente é que deve decidir se esse documento deve ou não ser produzido, afinal, quem está pagando é ele.<br />
Então, se seu cliente decidir que é valido ter um SAD (e eu creio que seja) atrase a sua criação o máximo que puder, você não vai precisar dele pra dizer algo as pessoas que trabalham com você. Seja ágil e <a href="http://www.agilemodeling.com/essays/agileDocumentation.htm">documente somente o necessário e quando necessário</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.timebox.com.br/2008/07/23/documento-de-arquitetura-quando-e-pra-que/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
