<?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>AgileAndArt &#187; Patterns</title>
	<atom:link href="http://www.agileandart.com/category/technology/patterns/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileandart.com</link>
	<description>The Art Improving Agile Software Development</description>
	<lastBuildDate>Sun, 21 Apr 2013 22:45:53 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Software Developers Retreat (dia 3)</title>
		<link>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-developers-retreat-dia-3</link>
		<comments>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-3/#comments</comments>
		<pubDate>Thu, 29 Nov 2012 19:05:51 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[christopher alexander]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[developers retreat]]></category>
		<category><![CDATA[dinâmica de grupo]]></category>
		<category><![CDATA[gestão ágil]]></category>
		<category><![CDATA[peopleware]]></category>
		<category><![CDATA[retiro]]></category>
		<category><![CDATA[retiro de desenvolvedores]]></category>
		<category><![CDATA[retreat]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[tom de marco]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=753</guid>
		<description><![CDATA[O terceiro dia do nosso retiro de desenvolvedores acabou! O sol estava brilhando e bateu forte na nossa janela. Como o pessoal tinha ido dormir um pouco mais tarde, também acabamos acordando um pouco mais tarde. Como de costume, fizemos nosso standup meeting as 11h. A moça que contratamos para limpar a casa e cozinhar [...]]]></description>
				<content:encoded><![CDATA[<p>O terceiro dia do nosso retiro de desenvolvedores acabou!</p>
<div id="attachment_761" class="wp-caption alignright" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4927.jpg"><img class="size-medium wp-image-761" title="Standup Meeting" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4927-300x200.jpg" alt="Standup Meeting" width="300" height="200" /></a><p class="wp-caption-text">Standup Meeting</p></div>
<p>O sol estava brilhando e bateu forte na nossa janela. Como o pessoal tinha ido dormir um pouco mais tarde, também acabamos acordando um pouco mais tarde. Como de costume, fizemos nosso standup meeting as 11h. A moça que contratamos para limpar a casa e cozinhar não veio nesse dia. Acabamos tendo que dar um jeito com as tarefas da casa. <span id="more-753"></span></p>
<p>Durante quase o dia todo, uma das duplas ficou investigando o bug do dia anterior, tentando reproduzir o comportamento em ambiente de teste. Não conseguiram evoluir muito, o que nos deixou bastante frustrados.</p>
<p>Eu fiquei trabalhando com um outro desenvolvedor numa mudança importante e grande que tínhamos que fazer no site, que envolvia a arquitetura e o design das páginas. Passamos praticamente o dia todo em cima do código, testando a nova arquitetura, fazendo um protótipo. Não conseguimos terminar todos os testes, mas evoluímos bastante.</p>
<div id="attachment_760" class="wp-caption alignleft" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4916.jpg"><img class="size-medium wp-image-760" title="Programando da beira da piscina" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4916-300x200.jpg" alt="Programando da beira da piscina" width="300" height="200" /></a><p class="wp-caption-text">Programando da beira da piscina</p></div>
<p>Na hora do almoço, fomos para a piscina e churrasqueira. O sol estava bombando. Aproveitei para fazer uns exercícios do Kung Fu. Quase todos também foram na sauna (só funcionou a seca). Um outro pessoal aproveitou a piscina para nadar. Também levamos os computadores e ficamos trabalhando da beira da água. Um momento mágico!</p>
<p>Os que ficaram responsáveis pela churrasqueira salgaram a carne demais, não acenderam o fogo direito. Além de tudo, a picanha tava dura igual uma pedra! Também colocamos umas batatas, cebolas e alho embrulhados no alumínio, mas não fizeram muito sucesso. No fim, a única coisa que se salvou do churrasco foi a berinjela. Acabamos com o arroz, feijão e salada do dia anterior e esse foi nosso almoço.</p>
<p>De noite, um de nós lembrou que o dia era de lua cheia e propôs uma meditação em grupo. Dizem que nesse dia, a energia da lua faz com que a meditação seja mais poderosa. Alguns gostaram da ideia e fizeram essa meditação que durou cerca de uma hora.</p>
<p>Enquanto isso, do que sobrou da carne dura do almoço, um pessoal tentou moer no liquidificador e fazer uns croquetes. Disseram que o gosto até que estava bom, mas continuava dura. A solução foi fritar uns hambúrgueres e comer lanche. Fizemos um <a href="http://www.youtube.com/watch?v=HoBFqGwJt_w&amp;feature=youtu.be">vídeo da movimentação da cozinha</a> de noite.</p>
<div id="attachment_764" class="wp-caption alignright" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4949.jpg"><img class="size-medium wp-image-764" title="Meu quarto - espaço privado" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4949-300x200.jpg" alt="Meu quarto - espaço privado" width="300" height="200" /></a><p class="wp-caption-text">Meu quarto - espaço privado</p></div>
<p>Depois da janta, continuei trabalhando na história de arquitetura e fomos até meia noite nela. Nesse dia eu tive um insight muito interessante. Depois da piscina, resolvi dar uma passada no meu quarto para trocar de roupa. Quando eu estava sozinho no quarto, senti uma paz e um alívio muito grande de estar lá sozinho. Percebi a importância que era ter um espaço privado na casa. Notei que a distribuição de cômodos do lugar ajudava muito. Havia na casa uma parte de convívio compartilhada, mas também uma boa área íntima, permitindo que as pessoas se retirarem quando achassem conveniente.</p>
<p>Lembrei de ter lido algo a respeito de espaços público/privados no livro <a title="Peopleware" href="http://dev.co.ua/docs/Peopleware.pdf">Peopleware, do Tom De Marco</a>. Ele cita alguns <a href="http://www.patternlanguage.com/leveltwo/patterns.htm">padrões de arquitetura catalogados</a> pelo <a href="http://www.pps.org/reference/calexander/">Christopher Alexander</a>. Tom De Marco enfatiza a importância de se ter num ambiente de trabalho, num escritório, espaços públicos e individuais harmoniosamente distribuídos e equilibrados. Pouca gente sabe, mas os <a href="http://www.natureoforder.com/">padrões do Alexander</a> influenciaram toda indústria de software: padrões de projeto (os famosos Design Patterns), <a href="http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/">Domain Driven Design</a>, o livro de  Refatorações, Métodos ágeis são alguns dos muitos exemplos de conceitos da área de software que surgiram na <a href="http://www.agileandart.com/2011/10/24/plop-a-conferencia-de-padroes/">comunidade de software que estuda padrões</a>.</p>
<h2>Pontos Positivos do Dia:</h2>
<ul>
<li>A piscina estava muito boa</li>
<li>Sol durante quase todo o dia</li>
<li>Meditação da Lua cheia</li>
<li>Stop Motion na cozinha na hora da preparação do jantar<br />
<iframe src="http://www.youtube.com/embed/HoBFqGwJt_w" frameborder="0" width="480" height="360"></iframe></li>
<li>Consegui trabalhar e avançar a arquitetura de uma história importante junto com outro desenvolvedor</li>
</ul>
<h2>Pontos Negativos do Dia:</h2>
<ul>
<li>As duas saunas não funcionam juntas</li>
<li>A carne do churrasco foi um fiasco</li>
<li>Uma dupla perdeu quase o dia todo investigando o bug do dia anterior e não encontraram a causa do bug</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Extending Patterns for Fearless Change &#8211; final version</title>
		<link>http://www.agileandart.com/2012/04/08/extending-patterns-for-fearless-change-final-version/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extending-patterns-for-fearless-change-final-version</link>
		<comments>http://www.agileandart.com/2012/04/08/extending-patterns-for-fearless-change-final-version/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 22:18:48 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Publications]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[behavioral patterns]]></category>
		<category><![CDATA[do art]]></category>
		<category><![CDATA[fearless change]]></category>
		<category><![CDATA[let them play]]></category>
		<category><![CDATA[linda rising]]></category>
		<category><![CDATA[Mary Lynn Manns]]></category>
		<category><![CDATA[patterns for introducing new ideas]]></category>
		<category><![CDATA[plop]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=636</guid>
		<description><![CDATA[Last year, I went to Portland (OR) and had the honor to attend to PLoP and SPLASH Conference. The paper I published in PLoP 2011 is finally released, so I&#8217;m sharing it with you. I&#8217;d like to thank all participants of the Writers Workshop. Their feedback was precious for me. Special thanks to Richard P. [...]]]></description>
				<content:encoded><![CDATA[<p><iframe id="doc_36591" src="http://www.scribd.com/embeds/70124759/content?start_page=1&amp;view_mode=list&amp;access_key=key-23r45gcp4s812spe4qh7" frameborder="0" scrolling="no" width="100%" height="600" data-auto-height="true" data-aspect-ratio="0.777636594663278"></iframe><br />
<span id="more-636"></span><br />
Last year, I went to Portland (OR) and had the honor to attend to PLoP and SPLASH Conference. The paper I published in PLoP 2011 is finally released, so I&#8217;m sharing it with you. I&#8217;d like to thank all participants of the Writers Workshop. Their feedback was precious for me. Special thanks to Richard P. Gabriel, Joe Yoder and Lise Hvatum, and, I shouldn&#8217;t forget, Linda Rising and Mary Linn Manns, for the unforgettable help during the shepherding process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/04/08/extending-patterns-for-fearless-change-final-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PLoP &#8211; A conferência de padrões</title>
		<link>http://www.agileandart.com/2011/10/24/plop-a-conferencia-de-padroes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=plop-a-conferencia-de-padroes</link>
		<comments>http://www.agileandart.com/2011/10/24/plop-a-conferencia-de-padroes/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 18:36:35 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[conferência]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[hilside]]></category>
		<category><![CDATA[kent beck]]></category>
		<category><![CDATA[linda rising]]></category>
		<category><![CDATA[padrões]]></category>
		<category><![CDATA[padrões para introduzir novas ideias]]></category>
		<category><![CDATA[patterns for introducing new ideas]]></category>
		<category><![CDATA[plop]]></category>
		<category><![CDATA[sugarloaf plop]]></category>
		<category><![CDATA[Writers Workshop]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=597</guid>
		<description><![CDATA[História Em agosto de 1993, Kent Beck e Grady Booch patrocinaram um retiro na montanha, onde um grupo de pessoas chegou a um consenso sobre os fundamentos em padrões de software. Ward Cunningham, Ralph Johnson, Ken Auer, Hal Hildebrand, Grady Booch, Kent Beck e Jim Coplien se basearam fortemente nas ideias de Alexander e suas [...]]]></description>
				<content:encoded><![CDATA[<h2><a class="tt-flickr tt-flickr-Small" title="PLoP Portland" href="http://www.flickr.com/photos/danicuki/6277165008/"><img class="alignleft" style="margin: 15px;" src="http://farm7.static.flickr.com/6036/6277165008_751b34a5fc_m.jpg" alt="PLoP Portland" width="240" height="160" /></a> História</h2>
<p style="text-align: justify;">Em agosto de 1993, <a href="http://en.wikipedia.org/wiki/Kent_Beck">Kent Beck</a> e <a href="http://en.wikipedia.org/wiki/Grady_Booch">Grady Booch</a> patrocinaram um retiro na montanha, onde um grupo de pessoas chegou a um consenso sobre os fundamentos em padrões de software. <a href="http://c2.com/ward/">Ward Cunningham</a>, <a href="http://st-www.cs.illinois.edu/users/johnson/">Ralph Johnson</a>, Ken Auer, Hal Hildebrand, <a href="http://en.wikipedia.org/wiki/Grady_Booch">Grady Booch</a>, Kent Beck e <a href="http://users.rcn.com/jcoplien/">Jim Coplien</a> se basearam fortemente nas ideias de Alexander e suas próprias experiências, formando um casamento entre objetos e padrões. O grupo concordou que estávamos prontos para construir, sobre as fundações do trabalho de <a href="http://en.wikipedia.org/wiki/Erich_Gamma">Erich Gamma</a> sobre padrões orientados a objetos, e usar esses padrões da mesma forma que Christopher Alexander usa seus padrões para planejamento urbano e construções arquitetônicas. O encontro do grupo se deu ao lado (side) de um monte (hill), daí o nome <a href="http://www.hillside.net/">Hillside</a>.</p>
<p><span id="more-597"></span></p>
<p style="text-align: justify;">Desde então, o <a href="http://www.hillside.net">Hillside Group</a> se tornou uma organização educacional sem fins lucrativos, que patrocinou e ajudou a organizar várias conferências (<a href="http://www.hillside.net/plop">Plop Conference</a>, EuroPlop, ChiliPlop, KoalaPlop, Mensore PLoP, SugarloafPLoP, e UP97), além de ter sido responsável pela edição e publicação da série de livros &#8220;Pattern Languages Of Program Design&#8221;.</p>
<h2>A conferência</h2>
<p style="text-align: justify;">Os eventos do PLoP são encontros bastante diferentes das conferências tradicionais que estamos acostumados. Normalmente, quando vamos a uma conferência, ficamos quase o dia todo assistindo palestras, normalmente ministradas por pessoas com bastante experiência. Nesses eventos, temos poucas oportunidades de conhecer e conversar com os outros. Isso até acontece, mas quase sempre de forma rápida e superficial.</p>
<p style="text-align: justify;">Já no PLoP, a interação entre os participantes é bastante intensa e rica. Normalmente o evento dura 3 dias,<a class="tt-flickr tt-flickr-Small" title="Lunchtime" href="http://www.flickr.com/photos/danicuki/6276633147/"><img class="alignright" style="margin: 15px;" src="http://farm7.static.flickr.com/6216/6276633147_d87a37f68f_m.jpg" alt="Lunchtime" width="240" height="160" /></a> durante os quais você realmente conhece as pessoas que estão lá. As refeições e o hotel já fazem parte do pacote do preço da conferência, então você acaba tomando café, almoçando e jantando com esse grupo. Como consequência disso, temos a oportunidade de manter conversas longas e produtivas com os participantes.</p>
<p style="text-align: justify;">Além das refeições fartas e deliciosas, o PLoP também inclui várias dinâmicas e jogos em grupos (games), cujo objetivo é aproximar os participantes, motivando e estreitando as relações pessoas entre todos. Os jogos são sempre divertidos, engraçados, tornando o ambiente mais seguro, informal e, principalmente criativo. Pode parecer um detalhe, mas esses jogos são fundamentais para o sucesso e</p>
<p><img class="alignright" style="margin: 15px;" src="http://farm7.static.flickr.com/6092/6277172246_2f55dc5de0_m.jpg" alt="PLoP Portland" width="240" height="160" /></p>
<p style="text-align: justify;">qualidade do evento.</p>
<p style="text-align: justify;">Design Patterns (Padrões de projeto) &#8211; meio óbvio né&#8230; <img src='http://www.agileandart.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Os assuntos que discutimos são quase sempre relacionados com desenvolvimento de software, com foco principal em padrões. Poucos desenvolvedores se dão conta, mas boa parte do que conhecemos sobre técnicas e boas práticas em desenvolvimento de software vieram de alguma maneira da comunidade de padrões. Apenas para citar alguns exemplos:</p>
<ul>
<li style="text-align: justify;"><a title="Injeção de Dependência e Testes com Dublês" href="http://www.agileandart.com/2011/09/20/injecao-de-dependencia-e-testes-com-dubles/">Testes com dublês (stubs, mocks, etc)</a></li>
<li style="text-align: justify;">Scrum nasceu de padrões</li>
<li style="text-align: justify;">Métodos ágeis nasceram na comunidade de padrões</li>
<li style="text-align: justify;">Padrões de arquitetura</li>
<li style="text-align: justify;">TDD (Test Triven Development)</li>
<li style="text-align: justify;"><a title="Refatoração na Pintura" href="http://www.agileandart.com/2008/08/17/refatoracao-na-pintura/">Refatoração de código</a></li>
<li style="text-align: justify;"><a title="DDD – Introdução a Domain Driven Design" href="http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/">Domain Driven Design (DDD)</a></li>
<li style="text-align: justify;"><a title="MDD – Model Driven Design" href="http://www.agileandart.com/2011/09/14/mdd-model-driven-design/">Model Driven Design (MDD)</a></li>
</ul>
<h2>Submissão dos artigos</h2>
<p>Para participar do PLoP, é preciso submeter para a conferência, alguns meses antes, uma proposta de artigo. Se o seu artigo estiver num nível que considerado adequado pelos avaliadores, você é aceito para o chamado processo de shepherding. O termo shepherd em inglês significa <strong>pastor</strong> &#8211; a ideia é que você será conduzido por um &#8220;mestre&#8221; no processo de escrita do seu artigo. Para cada autor, são escolhidos 1 ou 2 shepherds, que lerão o artigo atentamente e farão várias sugestões de melhoria.</p>
<p><a class="tt-flickr tt-flickr-Small" title="Meeting room" href="http://www.flickr.com/photos/danicuki/6277155348/"><img class="alignleft" style="margin: 15px;" src="http://farm7.static.flickr.com/6060/6277155348_cb63be8814_m.jpg" alt="Meeting room" width="240" height="160" /></a> Esse processo dura em torno de dois ou três meses. Durante esse tempo, você troca várias mensagens com os shepherds, mandando novas versões melhoradas do artigo. No meu caso, foram 4 iterações. O artigo que eu escrevi era sobre quatro novos <a title="Dissertação de Mestrado" href="http://www.agileandart.com/2009/11/04/dissertacao-de-mestrado/">padrões para introduzir novas ideias</a>. Minha ideia era adicionar novos padrões ao catálogo original da Linda Rising e Mary Lynn Manns (livro<a href="http://www.amazon.com/Fearless-Change-Patterns-Introducing-Ideas/dp/0201741571"> Fearless Change</a>). O artigo era uma evolução da minha tese de mestrado.</p>
<p>Ninguém melhor do que as próprias Linda e Mary Lynn para me ajudarem a escrever esses padrões, por isso elas foram escolhidas como minhas shepherds. A ajuda que obtive delas foi incrível, o que me possibilitou ter um artigo num nível adequado para ser aceito para a conferência. Após o processo de shepherding, você precisa enviar o artigo novamente para avaliação. Novamente, os avaliadores lêem o artigo e decidem se ele é adequado para ser trabalhado na conferência, num processo que eles chamam de Writers Workshop.</p>
<h2>Writers Workshop</h2>
<p style="text-align: justify;"><a class="tt-flickr tt-flickr-Small" title="Writers Workshop" href="http://www.flickr.com/photos/danicuki/6277156888/"><img class="alignleft" style="margin: 10px;" src="http://farm7.static.flickr.com/6048/6277156888_fd77a9545c_m.jpg" alt="Writers Workshop" width="240" height="160" /></a> O &#8220;carro chefe&#8221; das conferências PLoP são o que chamamos de Writers Workshop (Oficina dos Escritores). O conceito surgiu em comunidades de poetas, que se encontravam frequentemente para debater e aprimorar suas poesias. A dinâmica do Writers Workshop consiste na troca de experiência entre vários autores. Quem trouxe essa ideia para o mundo da computação foi o cientista <a href="http://www.dreamsongs.com/">Richard P. Gabriel</a>. Ele escreveu um <a href="http://www.amazon.com/Writers-Workshops-Work-Making-Things/dp/020172183X">livro sobre o assunto</a>, descrevendo detalhadamente como conduzir a oficina.</p>
<p style="text-align: justify;">Funciona basicamente assim: vários autores de artigos formam um grupo (normalmente de umas 10 pessoas). Durante os três dias do PLoP, esse grupo se encontra várias vezes. Em cada encontro eles escolhem um dos artigos para aprimorar. O autor do artigo deve obrigatoriamente estar presente, mas seu papel é apenas de ouvinte. Os outros fazem comentários, dando sugestões positivas e práticas de como melhorar o artigo. O autor anota essas considerações, para posteriormente aplicá-las a uma nova versão do artigo.</p>
<p><img class="alignright" style="margin: 15px;" src="http://farm7.static.flickr.com/6112/6276647013_f8fc3c2770_m.jpg" alt="Writers Workshop" width="240" height="160" /></p>
<p>Uma regra importante na oficina é a de que o <strong>artigo tem que falar por si só</strong>, ou seja, o autor não pode ficar dando explicações para os outros de coisas que deveriam estar claras no artigo. Se posteriormente alguém for ler o seu artigo, você não estará presente para dar suas explicações. Por isso, é importante que todas as ideias que você quer transmitir estejam claras no artigo.</p>
<p style="text-align: justify;">No final, o resultado extremamente satisfatório. O objetivo da comunidade de padrões é criar uma vasta literatura sobre soluções de problemas, que se mostraram eficazes em alguns contextos e que podem servir de guia para que outros apliquem as mesmas soluções e obtenham sucesso em seus projetos. Normalmente um padrão não é algo cabulosamente complicado, mas sim coisas simples, porém muito poderosas se aplicadas corretamente. Um fator importante que torna um padrão poderoso é a forma como ele é documentado. Autores de padrões devem tomar o cuidado de documentar muito bem um novo padrão, de maneira que ele seja amplamente compreendido. O Writers Workshop é fundamental para que texto final de um padrão seja lapidado ao extremo, tornando conciso, objetivo, prático e eficaz.</p>
<h2 style="text-align: justify;">Minha participação</h2>
<p style="text-align: justify;"><a class="tt-flickr tt-flickr-Medium" title="Man in the mirror" href="http://www.flickr.com/photos/danicuki/6265707704/"><img class="alignnone" style="margin-top: 10px; margin-bottom: 10px; margin-left: 5px; margin-right: 5px;" src="http://farm7.static.flickr.com/6091/6265707704_9b931ba550.jpg" alt="Man in the mirror" width="500" height="333" /></a></p>
<p style="text-align: justify;">Nesse ano, eu participei do PLoP como autor de um artigo junto com o Professor <a href="http://www.ime.usp.br/~kon">Fabio Kon</a>. O líder do meu grupo no Writers Workshop foi o próprio Richard Gabriel, ou seja, o cara que inventou a oficina! Foi uma surpresa maravilhosa tê-lo como um dos conselheiros para o meu artigo. Além do Richard, outros 6 autores faziam parte do grupo e ouvi comentários extremamente positivos e importantes para melhorar o artigo.</p>
<p style="text-align: justify;">Para aqueles que tiverem interesse, podem <a href="http://www.scribd.com/doc/70124759/Extending-Patterns-for-Fearless-Change">ler a versão preliminar do artigo aqui</a>. Durante os próximos meses, trabalharei para incorporar as sugestões obtidas na oficina de escritores. Essa nova versão será enviada para os organizadores da conferência, que farão uma avaliação final e, caso o artigo esteja satisfatório, será publicado na <a href="http://dl.acm.org/">biblioteca digital da ACM</a>.</p>
<p style="text-align: justify;"><a href="http://www.flickr.com/photos/danicuki/sets/72157627817569691/">Veja outras fotos do PLoP 2011</a></p>
<p style="text-align: justify;"><div class="flickr-photos"><a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6265707704/plop-conference-man-in-the-mirror.html" rel="album-72157627817569691" id="photo-6265707704" title="Man in the mirror"><img src="http://farm7.static.flickr.com/6091/6265707704_9b931ba550_t.jpg" width="100" height="67" alt="Man in the mirror" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6265194067/plop-conference-leaves-on-the-floor.html" rel="album-72157627817569691" id="photo-6265194067" title="Leaves on the floor"><img src="http://farm7.static.flickr.com/6152/6265194067_dc6d0f626e_t.jpg" width="100" height="67" alt="Leaves on the floor" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6265723038/plop-conference-plop-dinner.html" rel="album-72157627817569691" id="photo-6265723038" title="PLoP Dinner"><img src="http://farm7.static.flickr.com/6228/6265723038_9128aed20c_t.jpg" width="100" height="67" alt="PLoP Dinner" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6265723200/plop-conference-plop-dinner.html" rel="album-72157627817569691" id="photo-6265723200" title="PLoP Dinner"><img src="http://farm7.static.flickr.com/6224/6265723200_78b1d8b7d9_t.jpg" width="100" height="67" alt="PLoP Dinner" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6265193817/plop-conference-plop-dinner.html" rel="album-72157627817569691" id="photo-6265193817" title="PLoP Dinner"><img src="http://farm7.static.flickr.com/6103/6265193817_cf3e543dcf_t.jpg" width="100" height="67" alt="PLoP Dinner" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6265193651/plop-conference-plop-dinner.html" rel="album-72157627817569691" id="photo-6265193651" title="PLoP Dinner"><img src="http://farm7.static.flickr.com/6108/6265193651_cee103db0b_t.jpg" width="67" height="100" alt="PLoP Dinner" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6265723436/plop-conference-plop-dinner.html" rel="album-72157627817569691" id="photo-6265723436" title="PLoP Dinner"><img src="http://farm7.static.flickr.com/6099/6265723436_fda89242f9_t.jpg" width="100" height="67" alt="PLoP Dinner" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6265724198/plop-conference-plop-dinner.html" rel="album-72157627817569691" id="photo-6265724198" title="PLoP Dinner"><img src="http://farm7.static.flickr.com/6057/6265724198_526ff4481e_t.jpg" width="100" height="67" alt="PLoP Dinner" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277157678/plop-conference-breakfast.html" rel="album-72157627817569691" id="photo-6277157678" title="Breakfast"><img src="http://farm7.static.flickr.com/6057/6277157678_911841400d_t.jpg" width="100" height="67" alt="Breakfast" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276636323/plop-conference-breakfast.html" rel="album-72157627817569691" id="photo-6276636323" title="Breakfast"><img src="http://farm7.static.flickr.com/6101/6276636323_23b539d519_t.jpg" width="100" height="67" alt="Breakfast" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277162866/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277162866" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6094/6277162866_acaa5b20b2_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277156144/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277156144" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6097/6277156144_0beaa8a21d_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277154132/plop-conference-breakfast.html" rel="album-72157627817569691" id="photo-6277154132" title="Breakfast"><img src="http://farm7.static.flickr.com/6231/6277154132_7a8b1dde1f_t.jpg" width="100" height="67" alt="Breakfast" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276650479/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276650479" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6044/6276650479_86fb6316c0_t.jpg" width="67" height="100" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276644603/plop-conference-breakfast.html" rel="album-72157627817569691" id="photo-6276644603" title="Breakfast"><img src="http://farm7.static.flickr.com/6117/6276644603_8fc00dd023_t.jpg" width="100" height="67" alt="Breakfast" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276650065/plop-conference-games.html" rel="album-72157627817569691" id="photo-6276650065" title="Games"><img src="http://farm7.static.flickr.com/6034/6276650065_a5cfaf4a78_t.jpg" width="100" height="67" alt="Games" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277165736/plop-conference-games.html" rel="album-72157627817569691" id="photo-6277165736" title="Games"><img src="http://farm7.static.flickr.com/6212/6277165736_7c7ce0c272_t.jpg" width="100" height="67" alt="Games" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276652519/plop-conference-games.html" rel="album-72157627817569691" id="photo-6276652519" title="Games"><img src="http://farm7.static.flickr.com/6099/6276652519_e3cbf0eff8_t.jpg" width="100" height="67" alt="Games" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277163800/plop-conference-games.html" rel="album-72157627817569691" id="photo-6277163800" title="Games"><img src="http://farm7.static.flickr.com/6212/6277163800_061015ff52_t.jpg" width="100" height="67" alt="Games" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276650847/plop-conference-cleaning-the-window.html" rel="album-72157627817569691" id="photo-6276650847" title="Cleaning the window"><img src="http://farm7.static.flickr.com/6102/6276650847_58f739b0b9_t.jpg" width="67" height="100" alt="Cleaning the window" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277167180/plop-conference-ralph-johnson.html" rel="album-72157627817569691" id="photo-6277167180" title="Ralph Johnson"><img src="http://farm7.static.flickr.com/6219/6277167180_a2be928e13_t.jpg" width="100" height="67" alt="Ralph Johnson" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276642673/plop-conference-ralph-johnson.html" rel="album-72157627817569691" id="photo-6276642673" title="Ralph Johnson"><img src="http://farm7.static.flickr.com/6049/6276642673_83f32e4a50_t.jpg" width="100" height="67" alt="Ralph Johnson" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277159074/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277159074" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6106/6277159074_382296b28a_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276634735/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276634735" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6238/6276634735_d43267de38_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277166824/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277166824" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6213/6277166824_03f8e5d31d_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277163278/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277163278" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6224/6277163278_f9c6f21728_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276638439/plop-conference-audience.html" rel="album-72157627817569691" id="photo-6276638439" title="Audience"><img src="http://farm7.static.flickr.com/6045/6276638439_e924b8b0e9_t.jpg" width="100" height="67" alt="Audience" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277165302/plop-conference-richard-gabriel.html" rel="album-72157627817569691" id="photo-6277165302" title="Richard Gabriel"><img src="http://farm7.static.flickr.com/6050/6277165302_89d6c6eb73_t.jpg" width="67" height="100" alt="Richard Gabriel" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276647013/plop-conference-writers-workshop.html" rel="album-72157627817569691" id="photo-6276647013" title="Writers Workshop"><img src="http://farm7.static.flickr.com/6112/6276647013_f8fc3c2770_t.jpg" width="100" height="67" alt="Writers Workshop" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277155348/plop-conference-meeting-room.html" rel="album-72157627817569691" id="photo-6277155348" title="Meeting room"><img src="http://farm7.static.flickr.com/6060/6277155348_cb63be8814_t.jpg" width="100" height="67" alt="Meeting room" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277167682/plop-conference-hot-chocolate.html" rel="album-72157627817569691" id="photo-6277167682" title="Hot Chocolate"><img src="http://farm7.static.flickr.com/6106/6277167682_3eda4faa59_t.jpg" width="67" height="100" alt="Hot Chocolate" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277169926/plop-conference-hot-chocolate.html" rel="album-72157627817569691" id="photo-6277169926" title="Hot Chocolate"><img src="http://farm7.static.flickr.com/6098/6277169926_b2f6e2cc8c_t.jpg" width="67" height="100" alt="Hot Chocolate" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276633147/plop-conference-lunchtime.html" rel="album-72157627817569691" id="photo-6276633147" title="Lunchtime"><img src="http://farm7.static.flickr.com/6216/6276633147_d87a37f68f_t.jpg" width="100" height="67" alt="Lunchtime" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277162392/plop-conference-lunchtime.html" rel="album-72157627817569691" id="photo-6277162392" title="Lunchtime"><img src="http://farm7.static.flickr.com/6055/6277162392_b4b0a53abb_t.jpg" width="100" height="67" alt="Lunchtime" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277154462/plop-conference-games.html" rel="album-72157627817569691" id="photo-6277154462" title="Games"><img src="http://farm7.static.flickr.com/6115/6277154462_0bc5b038c8_t.jpg" width="100" height="67" alt="Games" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277156888/plop-conference-writers-workshop.html" rel="album-72157627817569691" id="photo-6277156888" title="Writers Workshop"><img src="http://farm7.static.flickr.com/6048/6277156888_fd77a9545c_t.jpg" width="100" height="67" alt="Writers Workshop" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277166446/plop-conference-portland.html" rel="album-72157627817569691" id="photo-6277166446" title="Portland"><img src="http://farm7.static.flickr.com/6093/6277166446_0ab2c4d5aa_t.jpg" width="67" height="100" alt="Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276636879/plop-conference-halloween.html" rel="album-72157627817569691" id="photo-6276636879" title="Halloween"><img src="http://farm7.static.flickr.com/6044/6276636879_e6f637ae08_t.jpg" width="67" height="100" alt="Halloween" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276640359/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276640359" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6116/6276640359_d493db35ac_t.jpg" width="67" height="100" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277170318/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277170318" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6117/6277170318_380d985103_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277173148/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277173148" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6044/6277173148_0771c8c0eb_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277172772/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277172772" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6221/6277172772_8e60c8dc5e_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276632049/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276632049" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6119/6276632049_536923e925_t.jpg" width="67" height="100" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276633971/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276633971" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6219/6276633971_51c56e81e8_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277161586/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277161586" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6228/6277161586_e8069ac881_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277172246/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277172246" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6092/6277172246_2f55dc5de0_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277165008/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277165008" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6036/6277165008_751b34a5fc_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276649489/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276649489" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6228/6276649489_70afb09c88_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276646647/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276646647" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6112/6276646647_af7dc8f166_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276639569/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276639569" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6099/6276639569_6cb99f5387_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276638069/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6276638069" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6054/6276638069_be9aacbf74_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277157260/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277157260" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6217/6277157260_7ea37730c3_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277164624/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277164624" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6229/6277164624_cf7d3b273f_t.jpg" width="100" height="67" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277160872/plop-conference-plop-portland.html" rel="album-72157627817569691" id="photo-6277160872" title="PLoP Portland"><img src="http://farm7.static.flickr.com/6101/6277160872_be218ce923_t.jpg" width="67" height="100" alt="PLoP Portland" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276637649/plop-conference-retrospective.html" rel="album-72157627817569691" id="photo-6276637649" title="Retrospective"><img src="http://farm7.static.flickr.com/6060/6276637649_7ab8b8a1b5_t.jpg" width="100" height="67" alt="Retrospective" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6276648069/plop-conference-portland-skyline.html" rel="album-72157627817569691" id="photo-6276648069" title="Portland Skyline"><img src="http://farm7.static.flickr.com/6233/6276648069_6679b27e2d_t.jpg" width="67" height="100" alt="Portland Skyline" /></a> <a class="tt-flickr tt-flickr-Thumbnail" href="http://www.agileandart.com/photo/6277160576/plop-conference-portland-skyline.html" rel="album-72157627817569691" id="photo-6277160576" title="Portland Skyline"><img src="http://farm7.static.flickr.com/6042/6277160576_3679db0a72_t.jpg" width="100" height="67" alt="Portland Skyline" /></a> </div></p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2011/10/24/plop-a-conferencia-de-padroes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SPLASH (antiga OOPSLA)</title>
		<link>http://www.agileandart.com/2011/10/19/splash-antiga-oopsla/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=splash-antiga-oopsla</link>
		<comments>http://www.agileandart.com/2011/10/19/splash-antiga-oopsla/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 21:52:19 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[conferência]]></category>
		<category><![CDATA[onward]]></category>
		<category><![CDATA[oopsla]]></category>
		<category><![CDATA[orientação a objetos]]></category>
		<category><![CDATA[padrões]]></category>
		<category><![CDATA[plop]]></category>
		<category><![CDATA[richard gabriel]]></category>
		<category><![CDATA[splash]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=588</guid>
		<description><![CDATA[OOPSLA Em 1985, um grupo de 4 pioneiros em programação orientada a objetos decidiu organizar nos EUA uma conferência sobre programação de sistemas orientados a objetos. No grupo estavam Adele Goldberg, Tom Love, David Smith, and Allen Wirfs-Brock, e a conferência foi chamada de OOPSLA (Object-Oriented Programming, Systems, Languages, and Applications). A primeira OOPSLA aconteceu no [...]]]></description>
				<content:encoded><![CDATA[<h2><a href="http://www.agileandart.com/wp-content/uploads/2011/10/oopsla-2008.png"><img class="size-full wp-image-590 alignright" style="margin: 15px;" title="oopsla-2008" src="http://www.agileandart.com/wp-content/uploads/2011/10/oopsla-2008.png" alt="" width="409" height="111" /></a>OOPSLA</h2>
<p style="text-align: justify;">Em 1985, um grupo de 4 pioneiros em programação orientada a objetos decidiu organizar nos EUA uma conferência sobre programação de sistemas orientados a objetos. No grupo estavam Adele Goldberg, Tom Love, David Smith, and Allen Wirfs-Brock, e a conferência foi chamada de OOPSLA (Object-Oriented Programming, Systems, Languages, and Applications). A primeira OOPSLA aconteceu no Hotel Marriott, em Portland, Oregon, em novembro de 1986. Cerca de 600 pessoas participaram, 50 artigos foram apresentados e os participantes ouviram sobre Smalltalk, Lisp, Flavors, CommonLoops, Emerald, Trellis/Owl, Mach, Prolog, ABCL/1, prototypes, e programação concorrente e distribuída de pessoas como Danny Bobrow, Gregor Kiczales, Rick Rashid, Andrew Black, Dave Ungar, Henry Lieberman, Ralph Johnson, Dan Ingalls, Ward Cunningham, Kent Beck, Ivar Jacobson e Bertrand Meyer.</p>
<p><span id="more-588"></span></p>
<p style="text-align: justify;">Essa gama enorme de tópicos e pesquisadores definiu o tom da conferência, que se tornou forum para alguns dos principais desenvolvimentos de software das últimas duas décadas. Foi na OOPSLA que nasceram coisas como cartões CRC, CLOS, Padrões de Projeto (Design Patterns, Self, métodos ágeis, arquiteturas orientadas a serviço (SOA), wikis, UML, TDD, refatoração, Java, compilação dinâmica, programação orientada a aspectos, só para citar algumas delas. Nem sempre falando sobre objetos, mas nunca deixando o assunto de lado, a conferência cresceu de 600 para 2500 participantes no seu pico, sendo ainda forte com cerca de 1300 pessoas mesmo depois do surgimento de uma série de conferências sobre padrões, Eclipse, EclipseCon, Agile e AOSD.</p>
<p style="text-align: justify;">No final dos anos 90 &#8211; com o sucesso de Smalltalk e Java nos negócios e C++ na engenharia &#8211; OO se tornou amplamente adotada e a OOPSLA mudou de uma conferência que trabalhava para tornar OO prático e compreensível para trabalhar nos problemas do mundo sempre mutante da computação, tanto na inventando novas técnicas e tecnologias quanto melhorando e expandindo teorias. O que permaneceu foi a paixão por inovação e o hábito de criar comunidades.</p>
<h2>Onward!</h2>
<p style="text-align: justify;"><a href="http://www.agileandart.com/wp-content/uploads/2011/10/rpg.jpg"><img class="alignright size-full wp-image-591" style="margin: 15px;" title="rpg" src="http://www.agileandart.com/wp-content/uploads/2011/10/rpg.jpg" alt="" width="320" height="213" /></a>No começo dos anos 2000, algumas pessoas da OOPSLA sentiram que a conferência se beneficiaria muito se fosse criada uma nova trilha de publicação de artigos focados em ideias inovadoras além de OO, e em formatos de artigos que normalmente não seriam aceitos na OOPSLA. Nasce então a <a href="http://onward-conference.org/">Onward</a>!, coordenada por <a href="http://www.dreamsongs.com">Richard Gabriel</a>. Onward! foi a primeira conferência patrocinada pela ACM a dar voz a &#8220;artigos ideias&#8221; no âmbito da aceitação acadêmica. Muitas outras conferências seguiram esse modelo depois.</p>
<h2></h2>
<h2>SPLASH</h2>
<p style="text-align: justify;"><a href="http://www.agileandart.com/wp-content/uploads/2011/10/splash.png"><img class="alignleft size-full wp-image-589" style="border-style: initial; border-color: initial; border-width: 0px; margin: 15px;" title="splash" src="http://www.agileandart.com/wp-content/uploads/2011/10/splash.png" alt="" width="480" height="76" /></a>Na metade dos anos 2000, ficou claro que a estrutura de organização da OOPSLA e Onward jutas precisavam ser refatoradas, não apenas para que ambas existissem ao mesmo tempo, mas também para fornecer a possibilidade de incluir novas trilhas de artigos, mantendo a conferência nova e moderna. Depois de vários debates entre as comunidades, ficou finalmente decidido criar um guarda-chuvas de conferências: assim nasceu a <a href="http://splashcon.org/">SPLASH</a>, a conferência da ACM em Sistemas, Programação, Linguages e Aplicações: Software para a Humanidade.</p>
<p style="text-align: justify;">Desde 2010, a SPLASH tem mantido e administrado a OOPSLA, Onward! e uma variedade de outros eventos, como o Simpósio de Educadores, Workshop de Experiências, Painéis, etc. OOPSLA é hoje &#8220;apenas&#8221; a trilha técnica de artigos de pesquisa de alta-qualidade, que foi desde o início o coração desse conferência. Ao mesmo tempo, a OOSPLA aumentou o escopo de tópicos muito além de OO, aceitando hoje uma enorme variedade de artigos relacionados a programação. Ao criar a SPLASH como um guarda-chuvas de conferências, a comunidade pode agora sustentar novas trilhas de artigos que eventualmente não cabem na OOPSLA, mas que ainda sim são relacionados. Assim, permite-se o espaço para inovação, assim como aconteceu com a Onward!</p>
<h2>E eu com isso?</h2>
<p style="text-align: justify;">Esse ano (2011), eu terei o privilégio de participar da SPLASH pela primeira vez (algo que eu já gostaria de ter feito há bastante tempo <img src='http://www.agileandart.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="text-align: justify;">A SPLASH tem um programa de Estudantes Voluntários, onde nós, estudantes, podemos participar da conferência <span style="text-decoration: underline;">de graça</span> em troca de algumas horas de trabalho para ajudar na organização. Eu me inscrevi nesse programa de estudantes voluntários e fui aceito.</p>
<p style="text-align: justify;">Além disso, eu tive dois artigos aceitos: um na Onward! e outro na PLoP (outra conferência que faz parte do guarda-chuvas da SPLASH). Para esses dois artigos, participarei do que eles chamam de Writers Workshop (Workshop de Escritores). O objetivo é trabalhar durante várias horas junto com os maiores (acreditem, são os maiores mesmo!) especialistas da área e anotar sugestões de melhorias para os artigos, que posteriormente farão parte das publicações científicas da conferência. Acima de tudo, é uma oportunidade maravilhosa de aprender muito e conhecer muita gente legal.</p>
<p style="text-align: justify;">Depois que os artigos ficarem prontos (e bem melhorados após os comentários das pessoas na conferência) eu publico aqui nesse Blog.</p>
<h2 style="text-align: justify;">Próximos passos</h2>
<p style="text-align: justify;">Ao longo da próxima semana, farei (na medida do possível <img src='http://www.agileandart.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  alguns posts aqui nesse blog contando um pouco mais sobre essa conferência incrível. Farei, como de costume, várias fotos e, talvez, alguns vídeos. Dessa forma, consigo compartilhar um pouquinho dessa experiência quem não pôde ir desta vez!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2011/10/19/splash-antiga-oopsla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MiniPLoP Brasil &#8211; Photos</title>
		<link>http://www.agileandart.com/2011/10/04/miniplop-brasil-photos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=miniplop-brasil-photos</link>
		<comments>http://www.agileandart.com/2011/10/04/miniplop-brasil-photos/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 14:32:17 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[computer science]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[fotos]]></category>
		<category><![CDATA[ime]]></category>
		<category><![CDATA[ime-usp]]></category>
		<category><![CDATA[miniplop]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[pictures]]></category>
		<category><![CDATA[plop]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/2011/10/04/miniplop-brasil-photos/</guid>
		<description><![CDATA[MiniPLoP Brasil, a set on Flickr. It was a great event! For more information about miniPLoP, check the event website: http://www.miniplop.ita.br/Apresentacao.html]]></description>
				<content:encoded><![CDATA[<div style="padding: 0; overflow: hidden; margin: 0; width: 500px;"><a href="http://www.flickr.com/photos/danicuki/6181881751/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6156/6181881751_dd2a6f09c8_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6182390034/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6177/6182390034_ff86f10fe2_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><span id="more-571"></span><a href="http://www.flickr.com/photos/danicuki/6182394056/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6160/6182394056_ce95c4b173_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181873039/in/set-72157627750747290/" title="Eduardo Guerra" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6172/6181873039_01b51d6c24_s.jpg" alt="Eduardo Guerra" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181874745/in/set-72157627750747290/" title="Fabio Kon" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6173/6181874745_e0d4d2ca4a_s.jpg" alt="Fabio Kon" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181877255/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6171/6181877255_aa5f863245_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 0 10px 0; width: 75px; height: 75px; float: left;"/></a><br clear="all" /><a href="http://www.flickr.com/photos/danicuki/6181878465/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6159/6181878465_6841be0edf_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6182402206/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6174/6182402206_7abeb343de_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6182403072/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6164/6182403072_4630891284_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181883367/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6165/6181883367_b98976148c_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181885273/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6156/6181885273_6d5ea6b729_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6182409240/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6166/6182409240_3ddf646870_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 0 10px 0; width: 75px; height: 75px; float: left;"/></a><br clear="all" /><a href="http://www.flickr.com/photos/danicuki/6181888229/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6165/6181888229_b1af61e4f7_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6182412194/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6160/6182412194_b81dc3a0a7_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181890723/in/set-72157627750747290/" title="Joe Yoder and Brian Foote" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6164/6181890723_614aae01eb_s.jpg" alt="Joe Yoder and Brian Foote" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6210571181/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6107/6210571181_7790a9a6ef_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181895415/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6179/6181895415_822a3dc515_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6182419248/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6166/6182419248_9126bb9a45_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 0 10px 0; width: 75px; height: 75px; float: left;"/></a><br clear="all" /><a href="http://www.flickr.com/photos/danicuki/6181898513/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6153/6181898513_0b0ef76cea_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6182422158/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6162/6182422158_d38f5e4a08_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181901609/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6161/6181901609_1394cef267_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181903841/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6169/6181903841_2f82aafef8_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6181905743/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6151/6181905743_5bf38c856e_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 10px 10px 0; width: 75px; height: 75px; float: left;"/></a><a href="http://www.flickr.com/photos/danicuki/6182429394/in/set-72157627750747290/" title="MiniPLoP Brasil" style="text-decoration: none;"><img src="http://farm7.static.flickr.com/6157/6182429394_21a4efac4f_s.jpg" alt="MiniPLoP Brasil" style="padding: 0 0 10px 0; width: 75px; height: 75px; float: left;"/></a><br clear="all" /></div>
<div style="font-size: 0.8em; margin-top: 0px; margin-bottom: 5px">
<p><a href="http://www.flickr.com/photos/danicuki/sets/72157627750747290/">MiniPLoP Brasil</a>, a set on Flickr.</p>
</div>
<p>It was a great event! For more information about miniPLoP, check the event website: http://www.miniplop.ita.br/Apresentacao.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2011/10/04/miniplop-brasil-photos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DDD &#8211; Introdução a Domain Driven Design</title>
		<link>http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ddd-introducao-a-domain-driven-design</link>
		<comments>http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 23:32:03 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[eric evans]]></category>
		<category><![CDATA[mdd]]></category>
		<category><![CDATA[model driven development]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=283</guid>
		<description><![CDATA[Domain Driven Design significa Projeto Orientado a Domínio. Ele veio do título do livro escrito por Eric Evans, dono da DomainLanguage,  uma empresa especializada em treinamento e consultoria para desenvolvimento de software. O livro de Evans é um grande catálogo de Padrões, baseados em experiências do autor ao longo de mais de 20 anos desenvolvendo [...]]]></description>
				<content:encoded><![CDATA[<p>Domain Driven Design significa Projeto Orientado a Domínio. Ele veio do título do livro escrito por Eric Evans, dono da DomainLanguage,  uma empresa especializada em treinamento e consultoria para desenvolvimento de software. O livro de Evans é um grande catálogo de Padrões, baseados em experiências do autor ao longo de mais de 20 anos desenvolvendo software utilizando técnicas de Orientação a Objetos. O que seria um Padrão?</p>
<p>Um padrão é uma regra de três partes que expressa a relação entre um contexto (1), um problema (2) e uma solução (3).</p>
<p>DDD pode ser visto por alguns como a volta da orientação a objetos. É verdade que o livro é um chamado às boas práticas de programação que já existem desde a época remota do SmallTalk. Quando se fala em Orientação a Objetos pensa-se logo em classes, heranças, polimorfismo, encapsulamento. Mas a essência da Orientação a Objetos também tem coisas como:</p>
<ul>
<li><strong>Alinhamento do código com o negócio:</strong> o contato dos desenvolvedores com os especialistas do domínio é algo essencial quando se faz DDD (o pessoal de métodos ágeis já sabe disso faz tempo);</li>
<li><strong>Favorecer reutilização:</strong> os blocos de construção, que veremos adiante, facilitam aproveitar um mesmo conceito de domínio ou um mesmo código em vários lugares;</li>
<li><strong>Mínimo de acoplamento:</strong> Com um modelo bem feito, organizado, as várias partes de um sistema interagem sem que haja muita dependência entre módulos ou classes de objetos de conceitos distintos;</li>
<li><strong>Independência da Tecnologia:</strong> DDD não foca em tecnologia, mas sim em entender as regras de negócio e como elas devem estar refletidas no código e no modelo de domínio. Não que a tecnologia usada não seja importante, mas essa não é uma preocupação de DDD.</li>
</ul>
<p>Todas essas coisas são bem exemplificadas e mostradas na forma de vários padrões em DDD. Mas o livro também mostra muitos padrões que não dizem respeito a código ou modelagem. Aparecem coisas que estão mais ligadas a processos (como Integração Contínua) ou a formas de relacionamento entre times que fazem parte do desenvolvimento de um sistema complexo. Eric Evans dividiu o livro em quatro partes, que apresentaremos a seguir.</p>
<p><span id="more-283"></span></p>
<h2>Colocando o modelo de domínio para funcionar</h2>
<p>Para ter um software que atenda perfeitamente a um determinado domínio, é necessário que se estabeleça, em primeiro lugar, uma Linguagem Ubíqua (devman: Linguagem comum, com termos bem definidos, que fazem parte do domínio do negócio e que são usados por todas as pessoas que fazem parte do processo de desenvolvimento de software). Nessa linguagem estão termos que fazem parte das conversas diárias entre especialistas de negócio e times de desenvolvimento. Todos devem usar os mesmos termos tanto na linguagem falada quanto no código. Isso significa que, se durante uma conversa com um cliente do sistema de cobrança, por exemplo, ele disser: “Temos que emitir a <strong>fatura</strong> para o <strong>cliente</strong> antes da <strong>data limite</strong>”, vamos ter no nosso código alguma coisa do tipo:</p>
<ul>
<li>Uma classe para a entidade <strong>Cliente</strong>;</li>
<li>Uma classe para a entidade <strong>Fatura</strong>;</li>
<li>Algum serviço que tenha um método <strong>emitir</strong>;</li>
<li>Algum atributo com o nome de <strong>data limite</strong>.</li>
</ul>
<p>Essa linguagem ubíqua deve ser compreendida por todos e não pode haver ambiguidades. Toda vez que alguém perceber que um determinado conceito do domínio possui várias palavras que o represente, essa pessoa deve tentar re-adequar tanto a linguagem falada e escrita, quanto o código.</p>
<p>Utilizando a <strong>Linguagem Ubíqua</strong> criamos um modelo de domínio através do <strong>Projeto Dirigido pelo Modelo</strong> (Model Driven Design – MDD). A idéia por trás de MDD é a de que o seu modelo abstrato deve ser uma representação perfeita do seu domínio. Tudo que existe no seu negócio deve aparecer no modelo. Só aparece no modelo aquilo que está no negócio.</p>
<p>Em um time que cria software temos de um lado os especialistas de negócio e de outro os desenvolvedores e arquitetos. Num processo ágil defendido pelo MDD a criação do modelo abstrato deve ser feita em grupo, com todas as pessoas juntas. Se arquitetos e analistas de negócio criarem o modelo sem a participação dos programadores, corre-se o risco de criar um modelo que não é implementável ou que usará uma tecnologia inadequada. Da mesma forma, se os programadores codificarem sem se basear num modelo consistente, provavelmente desenvolverão um software que simplesmente não serve para o domínio. Em DDD, parte das pessoas que modelam o domínio são necessariamente pessoas que colocam a mão em código (Hands-on Modelers). Se os programadores não se sentirem responsáveis pelo modelo ou não entenderem como o modelo funciona, então o modelo não terá relação alguma com o software produzido por essas pessoas.</p>
<p>O processo de maturação de um sistema desenvolvido usando MDD deve ser contínuo. O modelo servirá de guia para a criação do código e, ao mesmo tempo, o código ajuda a aperfeiçoar o modelo. O contato contínuo com o código trará <em>insights </em>aos programadores, que irão refatorar o código. Essa refatoração deverá ser feita não só no código, mas também no próprio modelo.</p>
<h2>Blocos de construção do Model Driven Design (MDD)</h2>
<p>Uma vez que decidimos criar um modelo usando MDD, precisamos, inicialmente, isolar o modelo de domínio das demais partes que compõem o sistema. Essa separação pode ser feita utilizando-se uma arquitetura em camadas (Figura 1), que dividirá nossa aplicação em quatro partes:</p>
<ul>
<li><strong>Interface de Usuário</strong> – parte responsável pela exibição de informações do sistema ao usuário e também por interpretar comandos do usuário;</li>
<li><strong>Aplicação</strong> – essa camada não possui lógica de negócio. Ela é apenas uma camada fina, responsável por conectar a Interface de Usuário às camadas inferiores;</li>
<li><strong>Domínio</strong> – representa os conceitos, regras e lógicas de negócio. Todo o foco de DDD está nessa camada. Nosso trabalho, daqui para frente, será aperfeiçoar e compreender profundamente essa parte;</li>
<li><strong>Infra-estrutura</strong> – fornece recursos técnicos que darão suporte às camadas superiores. São normalmente as partes de um sistema responsáveis por persistência de dados, conexões com bancos de dados, envio de mensagens por redes, gravação e leitura de discos, etc.</li>
</ul>
<p><strong> </strong></p>
<p style="text-align: center;"><strong><a href="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.50.18.png"><img class="aligncenter size-full wp-image-284" title="Screen shot 2010-07-16 at 09.50.18" src="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.50.18.png" alt="" width="600" height="452" /></a>Figura 1. </strong>Arquitetura em camadas, utilizada para separar o domínio do resto da aplicação.</p>
<p>Depois de dividirmos o sistema em camadas, nos preocuparemos apenas com a camada de domínio. Para modelar essa parte, utilizamos alguns Padrões propostos em DDD. Esses padrões são chamados de blocos de construção e serão utilizados para representar nosso modelo abstrato. Esses blocos podem ser:</p>
<ul>
<li><strong>Entidades</strong> – classes de objetos que necessitam de uma identidade. Normalmente são elementos do domínio que possuem ciclo de vida dentro de nossa aplicação: um Cliente, por exemplo, se cadastra no sistema, faz compras, se torna inativo, é excluído, etc.;</li>
<li><strong>Objetos de Valores</strong> – objetos que só carregam valores, mas que não possuem distinção de identidade. Bons exemplos de objetos de valores seriam: strings, números ou cores. Por exemplo: se o lápis de cor da criança acabar e você der um novo lápis a ela, da mesma cor, só que de outra caixa, ela não vai se importar. Para a criança, o lápis vermelho de uma caixa é igual ao lápis vermelho de outra caixa. As instâncias de Objetos de Valores são imutáveis, isto é, uma vez criados, seus atributos internos não poderão mais ser modificados. Em Java, temos, por exemplo, a classe BigDecimal, muito utilizada para fazer cálculos com valores grandes. Na <strong>Listagem 1</strong> observamos que, para multiplicar dois valores representados pela classe BigDecimal, não alteramos os objetos com os valores dos fatores da multiplicação. Para calcular 5 milhões vezes 30 milhões construímos cada um dos fatores e então obtemos o resultado, que será armazenado numa terceira variável. Após o cálculo, cada um dos fatores continuará armazenando o valor original. A saída do código será:</li>
</ul>
<p><code><br />
5000000<br />
30000000<br />
150000000000000<br />
</code></p>
<ul>
<li><strong>Agregados</strong> – compostos de Entidades ou Objetos de Valores que são encapsulados numa única classe. O Agregado serve para manter a integridade do modelo. Elegemos uma classe para servir de <strong>raiz</strong> do Agregado. Quando algum cliente quiser manipular dados de uma das classes que compõem o Agregado, essa manipulação só poderá ser feita através da <strong>raiz</strong>;</li>
<li><strong>Fábricas</strong> – classes responsáveis pelo processo de criação dos Agregados ou dos Objetos de Valores. Algumas vezes, Agregados são relativamente complexos e não queremos manter a lógica de criação desses Agregados nas classes que o compõem. Extraímos então as regras de criação para uma classe externa: a fábrica;</li>
<li><strong>Serviços</strong> – classes que contém lógica de negócio, mas que não pertence a nenhuma Entidade ou Objetos de Valores. É importante ressaltar que Serviços não guardam estado, ou seja, toda chamada a um mesmo serviço, dada uma mesma pré-condição, deve retornar sempre o mesmo resultado;</li>
<li><strong>Repositórios</strong> – classes responsáveis por administrar o ciclo de vida dos outros objetos, normalmente Entidades, Objetos de Valor e Agregados. Os repositórios são classes que centralizam operações de criação, alteração e remoção de objetos. Em linguagens como Java e .NET, repositórios são comumente implementados usando-se frameworks como Hibernate ou Nhibernate. Já em RubyOnRails, o ActiveRecord faz o papel de repositório;</li>
<li><strong>Módulos</strong> – abstrações que têm por objetivos agrupar classes por um determinado conceito do domínio. A maioria das linguagens de programação oferecem suporte a módulos (pacotes em Java, namespaces em .NET ou módulos em Ruby). Um anti-padrão comum é a criação de módulos que agrupam as classes segundo conceitos de infra-estrutura. Um exemplo seria, ao se trabalhar com Struts, em Java, criar um pacote que conterá todas as Actions do sistema. Ao usar DDD devemos agrupar classes se esse agrupamento faz sentido do ponto de vista do domínio, ou seja, do negócio. Se tivermos, por exemplo, várias classes que compõem informações de Paciente num sistema médico, podemos criar um módulo chamado <strong>paciente</strong> e colocar classes como Ficha, PrescricaoMedica, RegistroDeConsulta e HistoricoDeCirurgias num mesmo pacote.</li>
</ul>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">BigDecimal</span> fiveM <span style="color: #339933;">=</span> <span style="color: #003399;">BigDecimal</span>.<span style="color: #006633;">valueOf</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">BigDecimal</span> thirtyM <span style="color: #339933;">=</span> <span style="color: #003399;">BigDecimal</span>.<span style="color: #006633;">valueOf</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">30000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">BigDecimal</span> result <span style="color: #339933;">=</span> fiveM.<span style="color: #006633;">multiply</span><span style="color: #009900;">&#40;</span>thirtyM<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>fiveM<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>thirtyM<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>result<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h2>Refatorando para compreender profundamente o modelo</h2>
<p>Depois de elaborar um modelo de dados que reflete o seu domínio, usando os blocos de construção do MDD, o processo de aperfeiçoamento do modelo continua. O modelo deve ser refatorado e melhorado na medida em que se obtém maior compreensão de conceitos importantes do domínio. Muitas vezes alguns conceitos do domínio estão implícitos no código. O trabalho do desenvolvedor é tentar identificar esses conceitos implícitos e torná-los explícitos. Alguns padrões podem ajudar a compreender mais profundamente o modelo:</p>
<ul>
<li><strong>Interface de Intenção Revelada</strong> – usar nomes em métodos ou classes que dizem exatamente “o que” essas classes ou métodos fazem, mas não “como” elas fazem. Dizer “como” no nome do método quebra o encapsulamento, uma vez que quem chama o código saberá detalhes de implementação;</li>
<li><strong>Funções sem Efeitos-Colaterais</strong> – tentar deixar o código com o maior número possível de métodos que não alterem o estado dos objetos, concentrando esse tipo de operação (alteração de estado) em Comandos;</li>
<li><strong>Asserções</strong> – para os Comandos que alteram estados, criar testes de unidade que rodem automaticamente, ou colocar asserções no código que validem, após a chamada dos comandos, as alterações de estado esperadas.</li>
</ul>
<p>Por exemplo, o dono de uma loja de tintas pode querer um programa que mostre para seus clientes o resultado da mistura de cores padrões. Inicialmente temos um código como no código abaixo. Não é possível, apenas olhando o nome do método (<span style="text-decoration: underline;">pinta)</span>, saber o que esse método faz. O que ele pinta? Um quadro? Um desenho? Uma parede? O que ele faz com a Tinta que ele recebe como parâmetro? Temos que olhar a implementação para saber o que está acontecendo de fato neste método.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Tinta<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> r<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> g<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> b<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> pinta<span style="color: #009900;">&#40;</span>Tinta p<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		v <span style="color: #339933;">=</span> v <span style="color: #339933;">+</span> pinta.<span style="color: #006633;">getV</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//volume é somado</span>
		<span style="color: #666666; font-style: italic;">//várias linhas de código complexo</span>
		<span style="color: #666666; font-style: italic;">//para misturar tintas</span>
		<span style="color: #666666; font-style: italic;">//no final, r, g e b têm seus valores alterados</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Um possível teste para esse código seria assim:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> testPinta<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">//cria amarelo com volume 100</span>
	Tinta amarelo <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Tinta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">50</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//cria azul com volume 100</span>
	Tinta azul <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Tinta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//mistura azul com amarelo</span>
	amarelo.<span style="color: #006633;">pinta</span><span style="color: #009900;">&#40;</span>azul<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//verifica o resultado. O volume deve ser 200</span>
	assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">200</span>, amarelo.<span style="color: #006633;">getV</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">25</span>, amarelo.<span style="color: #006633;">getB</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">25</span>, amarelo.<span style="color: #006633;">getY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, amarelo.<span style="color: #006633;">getR</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Nós queremos tornar esse código mais claro, e para isso usaremos uma interface de intenção revelada. Mudaremos o código da classe Tinta e o nosso teste:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> testMisturaDeTintas<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">//cria amarelo com volume 100</span>
	Tinta amarelo <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Tinta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">50</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//cria azul com volume 100</span>
	Tinta azul <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Tinta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//mistura azul com amarelo</span>
	amarelo.<span style="color: #006633;">misturadoCom</span><span style="color: #009900;">&#40;</span>azul<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//verifica o resultado. O volume deve ser 200</span>
	assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">200</span>, amarelo.<span style="color: #006633;">getVolume</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">25</span>, amarelo.<span style="color: #006633;">getAzul</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">25</span>, amarelo.<span style="color: #006633;">getAmarelo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, amarelo.<span style="color: #006633;">getVermelho</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Tinta<span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> vermelho<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> amarelo<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> azul<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> misturadoCom<span style="color: #009900;">&#40;</span>Tinta p<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	volume <span style="color: #339933;">=</span> volume <span style="color: #339933;">+</span> pinta.<span style="color: #006633;">getVolume</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//volume é somado</span>
	<span style="color: #666666; font-style: italic;">//várias linhas de código complexo</span>
	<span style="color: #666666; font-style: italic;">//para misturar tintas</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>O código resultante já torna muito mais claro o que o método faz. O próprio nome do método (misturaCom) já diz: mistura uma tinta com outra. O antigo nome (pinta) não fazia sentido do ponto de vista do domínio, já que o cliente da loja de tintas quer saber: “que cor fica quando eu misturo essa tinta com outra?”</p>
<h2>Projeto estratégico</h2>
<p>As técnicas de criação e refinamento do modelo (como o uso da Linguagem Ubíqua e MDD) são importantes para começarmos a entender como desenvolver um sistema dirigido pelas regras de negócio do domínio, ou seja, como aplicar DDD. Mas a parte mais importante (e difícil) de Domain Driven Design é quando começamos a lidar com sistemas complexos. Como deve ser a interação entre sistemas que interagem entre si? Como dividir nosso trabalho, de maneira que foquemos nossos esforços naquilo que tem maior valor para o negócio? Como fazer a comunicação entre os times que desenvolvem esses sistemas?</p>
<p>Temos alguns padrões que nos ajudam a dividir nosso software em várias partes, que chamamos de contextos. Cada <strong>Contexto Delimitado</strong> deve estar bem claro para todos que estão envolvidos no processo de desenvolvimento. A fronteira entre contextos deve ser clara para todos, ou seja, todo mundo deve saber a qual contexto um determinado pedaço de código pertence.</p>
<p>Os padrões que nos ajudarão a estabelecer qual é a relação existente entre os vários times são:</p>
<ul>
<li><strong>Mapa de Contextos</strong> – uma forma pragmática de documentar claramente os vários <strong>Contextos Delimitados</strong> que fazem parte de um sistema complexo (<strong>Figura 2</strong>). No mapa de contextos ressaltaremos os vários componentes do software e como as equipes que cuidam desse sistema interagem. Além disso, criaremos um mapa de tradução que servirá para facilitar a comunicação. Muitas vezes, existem termos usados para um mesmo conceito em vários contextos (por exemplo, no contexto do sistema de cobrança usamos o termo “Fatura”, que significa a mesma coisa que o termo “Nota Fiscal” no contexto do sistema de faturamento). Toda vez que o time do sistema de cobrança for conversar com o time de faturamento, ele terá que usar adequadamente o termo “Nota Fiscal” para que o outro time entenda o que está sendo dito;</li>
</ul>
<p><strong> </strong></p>
<p><strong><a href="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.50.35.png"><img class="aligncenter size-full wp-image-285" title="Screen shot 2010-07-16 at 09.50.35" src="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.50.35.png" alt="" width="604" height="455" /></a>Figura 2. </strong>Mapa de Contextos</p>
<ul>
<li><strong>Produtor-Consumidor</strong> – Quando os times possuem uma relação bem clara de Consumidor-Produtor. Produtor é o time que fornece software para o time Consumidor. Nesse tipo de relação, o Produtor assumirá compromissos de entregas para seu Consumidor, que por sua vez, tomará decisões esperando que esse compromisso seja cumprido. O time Produtor deverá rodar testes automatizados feitos pelo Consumidor (ou por ele mesmo) toda vez que fizer alguma alteração na interface que o cliente usa. Isso garantirá que nada irá quebrar do lado do Consumidor;</li>
<li><strong>Conformista</strong> – Algumas vezes não é possível que dois times de desenvolvimento se relacionem como Produtor-Consumidor. Mesmo que o Produtor tenha muito boa vontade, ele pode ter outras prioridades. Caso não seja possível alterar ou pedir alterações de uma parte do sistema mantida por outro time, deve-se adotar uma postura conformista e assumir que a única forma de caminhar é ter que aguardar o outro grupo e se adaptar a sua realidade. Quando a relação de conformista é estabelecida, não solicitamos mais funcionalidades ao outro time. Alteramos nossos sistemas para se adequar ao que já é oferecido pelo outro sistema;</li>
</ul>
<ul>
<li><strong>Núcleo Compartilhado</strong> – Quando dois times alteram uma mesma base de código comum (<strong>Figura 3</strong>). É importante que esse pedaço de código esteja bem definido e que possua muitos testes automatizados, que devem ser rodados por qualquer um dos grupos que desejar fazer alguma alteração. Todas as alterações devem ser comunicadas ao outro time e os testes precisam fazer parte de um processo de <strong>Integração Contínua</strong>. Quando se usa um núcleo compartilhado, esse pedaço de código tende a ser mais difícil de mudar, já que precisa da aceitação de várias equipes. Por outro lado, evita-se algumas duplicações, já que conceitos comuns são codificados uma única vez e utilizados por vários sistemas;</li>
</ul>
<p><strong> </strong></p>
<p><strong><a href="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.50.47.png"><img class="aligncenter size-full wp-image-286" title="Screen shot 2010-07-16 at 09.50.47" src="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.50.47.png" alt="" width="592" height="443" /></a>Figura 3.</strong> Núcleo Compartilhado</p>
<ul>
<li><strong>Camada Anti-corrupção</strong> – Quando temos um sistema legado, com código muito bagunçado e uma interface complexa, e estamos escrevendo um sistema novo com o código razoavelmente bem feito, criamos uma camada entre esses dois sistemas (<strong>Figura 4</strong>). O nosso sistema novo e bem feito falará com essa camada, que possui uma interface bem feita. E a camada anti-corrupção é responsável por traduzir e adaptar as chamadas para o sistema legado, usando uma fachada interna;</li>
</ul>
<p><strong> </strong></p>
<p style="text-align: center;"><strong><a href="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.51.00.png"><img class="aligncenter size-full wp-image-287" title="Screen shot 2010-07-16 at 09.51.00" src="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.51.00.png" alt="" width="550" height="414" /></a>Figura 4.</strong> Camada Anti-corrupção</p>
<ul>
<li><strong>Caminhos Separados </strong>– Quando o custo de integração é muito grande e os benefícios pequenos, times podem decidir seguir caminhos em que dois sistemas não dependam um do outro. Esse padrão é muito usado principalmente em partes pequenas e periféricas do domínio. Um exemplo seria optar por ter um cadastro de CEP local num sistema de vendas online, ao invés de integrar com o sistema dos correios;</li>
<li><strong>Serviço Aberto de Funcionalidades</strong> e <strong>Linguagem Publicada</strong> – Quando temos vários clientes que interagem com uma mesma parte do nosso sistema, não é conveniente que criemos adaptações para cada um desses clientes. A solução para essa situação é criar um <strong>Serviço Aberto de Funcionalidades</strong> e criar uma <strong>Linguagem Publicada</strong>. Essa linguagem é a documentação de uma API que poderá ser usada pelos vários clientes. Hoje em dia, vários serviços de internet utilizam esse tipo de abordagem: Google, Flickr, Twitter, Amazon, etc. Todos esses serviços possuem API pública, que pode ser usada por programadores que queiram criar sistemas que interajam com esses serviços.</li>
</ul>
<h2>Em busca do Núcleo</h2>
<p>A parte mais importante e que, de fato, torna o uso de DDD interessante, é o processo chamado de Destilação do Domínio. A perfeição é atingida quando não temos mais nada para tirar daquilo que chamamos <strong>Núcleo do Domínio</strong> (Core Domain). Inicialmente, o nosso sistema é um bloco monolítico, que mistura código de várias camadas, classes com especialidades bem diversas. Nosso trabalho é ir separando em módulos, refatorando, extraindo métodos, classes, conceitos. É preciso organizar tudo, de forma que tenhamos bem claro quais são os conceitos centrais do nosso negócio. Esses conceitos, centrais, são nosso núcleo.</p>
<p>Tudo que não fizer parte do núcleo deve ser extraído e separado em sub-domínios genéricos. Apesar de serem elementos que fazem parte do nosso domínio, não são centrais. Uma vez que conceitos secundários são identificados, deve-se dar menor prioridade para eles do que para aqueles elementos que estão no <strong>Núcleo do Domínio</strong>. Eventualmente, vale a pena considerar adotar soluções prontas (de prateleira) para esses casos, ao invés de manter a implementação sob responsabilidade do time de desenvolvimento. Um exemplo: imagine que estamos desenvolvendo um sistema para uma empresa de entregas internacionais. Nesse sistema temos que tratar com seriedade a questão de fuso-horários, já que esse assunto pode ser crucial para o agendamento e pontualidade nas entregas. Apesar disso, “fuso-horário” não é, provavelmente, um conceito que faz parte do núcleo do nosso negócio. Podemos desenvolver nosso próprio código de conversão de horários entre vários fusos, mas a melhor alternativa seria usar alguma biblioteca pronta. Provavelmente existe uma que irá atender às nossas necessidades.</p>
<p>Para tornar claro para todos o que é exatamente o Núcleo do Domínio, convêm escrever um documento pequeno, de no máximo uma página, com uma Sentença da Visão do Domínio.</p>
<p>Um exemplo de <strong>Sentença da Visão do Domínio</strong> seria:</p>
<p><em>“O modelo representa compras feitas por clientes numa loja. O cliente pode passear pela loja e visualizar produtos, que estão divididos em categorias. O cliente coloca os produtos que deseja num carrinho de compras e depois passa no caixa para efetuar o pagamento, que pode ser feito em dinheiro ou cartão. Após o pagamento, os produtos são oficialmente retirados do estoque da loja.&#8221;</em></p>
<p>Apesar de serem importantes, as especificações abaixo não fazem parte da visão de domínio:</p>
<p><em>“Todos os produtos são identificados por códigos de barra. Os códigos são lidos no caixa por um terminal e os preços são mostrados na tela, para o cliente, quando o código é lido. Os dados de compra são enviados através da rede sem fio e cadastrados num banco de dados, que deve ter 99,9% de disponibilidade.”</em></p>
<p>Algumas vezes, essa visão resumida não é suficiente para documentar todo o Núcleo. Outra forma de ressaltar as partes que fazem parte do coração do domínio é usar o padrão <strong>Núcleo Destacado</strong>. Para isso, criamos um documento mais extenso, mas que não passe de sete páginas, explicando todos os elementos do núcleo e a forma como esses elementos interagem. Também podemos definir um formato especial, destacado, para representar elementos do núcleo no modelo de domínio. Assim, qualquer pessoa que estiver olhando a documentação geral do modelo, saberá claramente quais elementos são fundamentais e quais não são.</p>
<h2>Conclusões</h2>
<p>Extrair a essência do domínio, dentre milhares de linhas de código de um sistema complexo nem sempre é fácil. O trabalho de refinamento e busca de uma visão clara é contínuo. A refatoração é um processo incessante de busca por melhorias de projeto. Observe a sequência de imagens da <strong>Figura 5</strong>. Essas imagens fazem parte um estudo feito por Pablo Picasso, que durou cerca de dois meses. Durante esse tempo, o pintor refez várias vezes o mesmo desenho do touro. A cada passo ele identificava partes do desenho anterior que poderiam ser removidas, sem que a essência da idéia fosse perdida. Aplicar DDD é utilizar Padrões com o objetivo de extrair e reconhecer a essência de um sistema.</p>
<p style="text-align: center;"><strong><a href="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.51.19.png"><img class="aligncenter size-full wp-image-288" title="Screen shot 2010-07-16 at 09.51.19" src="http://www.agileandart.com/wp-content/uploads/2010/07/Screen-shot-2010-07-16-at-09.51.19.png" alt="" width="600" height="446" /></a>Figura 5.</strong> Refatorando para compreender a essência</p>
<p>Os padrões citados nesse artigo são apenas alguns dos descritos em Domain Driven Design. DDD é uma forma de desenvolver software que, por estar ligado a boas práticas de Orientação a Objetos, tem muito a ver com desenvolvimento ágil. Além disso, a própria idéia de Padrões, que promove eficácia na comunicação, é um dos valores pregados pelos agilistas. Obviamente não é possível entender DDD lendo poucas páginas. O conselho que damos é ler o livro do Eric Evans e começar a aplicar esses padrões no seu próprio negócio. Certamente são técnicas que levarão ao desenvolvimento de serviços de qualidade, sistemas seguros e fáceis de dar manutenção, levando, consequentemente, à satisfação dos seus clientes com a rapidez que o mercado de hoje exige.</p>
<p>.<strong><em>De que se trata o artigo:</em></strong></p>
<p>Neste artigo veremos os principais padrões de Domain Driven Design e alguns exemplos de como esses padrões podem ser aplicados.</p>
<p><strong><em>Para que serve:</em></strong></p>
<p>DDD induz a implantação de um cenário de melhoria contínua, podendo ser uma ferramenta extremamente útil para se desenvolver software de qualidade e que atenda bem as necessidades do cliente.</p>
<p><strong><em>Em que situação o tema útil:</em></strong></p>
<p>Tanto programadores quanto arquitetos e especialistas de negócio podem se beneficiar das técnicas de DDD, que ensinam justamente boas práticas de como modelar seu domínio, além de tornar eficiente a interação entre os vários papéis de pessoas que fazem parte do processo de desenvolvimento de software. DDD pode ser muito útil quando vários times desenvolvem um mesmo sistema complexo.</p>
<p>Links</p>
<p><strong>Mini-book de DDD</strong></p>
<p><a href="http://www.infoq.com/minibooks/domain-driven-design-quickly">http://www.infoq.com/minibooks/domain-driven-design-quickly</a><strong> </strong></p>
<p><strong>Domain Driven Design</strong></p>
<p><a href="http://domaindrivendesign.org/">http://domaindrivendesign.org/</a><strong> </strong></p>
<p><strong>Vídeo de Introdução a DDD</strong></p>
<p><a href="http://vimeo.com/3545313">http://vimeo.com/3545313</a><strong> </strong></p>
<p><strong>Vídeos sobre Projeto Estratégio</strong></p>
<p><a href="http://vimeo.com/3972348">http://vimeo.com/3972348</a></p>
<p><a href="http://www.infoq.com/presentations/strategic-design-evans">http://www.infoq.com/presentations/strategic-design-evans</a><strong> </strong></p>
<p><strong>Vídeo Colocando o Modelo para Funcionar</strong></p>
<p><a href="http://www.infoq.com/presentations/model-to-work-evans">http://www.infoq.com/presentations/model-to-work-evans</a></p>
<p>Eric Evans, <strong>Domain Driven Design – Tackling Complexity in the Heart of Software,</strong> 2004.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Brand New Blog</title>
		<link>http://www.agileandart.com/2010/04/15/brand-new-blog/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=brand-new-blog</link>
		<comments>http://www.agileandart.com/2010/04/15/brand-new-blog/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 22:38:30 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=224</guid>
		<description><![CDATA[It took a long time, but I finally migrated my old blogspot blog to WordPress. Please, give me your feedback about the new blog&#8217;s layout. I hope I can create much more content for you, with this incredible tool.]]></description>
				<content:encoded><![CDATA[<p>It took a long time, but I finally migrated my old blogspot blog to WordPress. Please, give me your feedback about the new blog&#8217;s layout. I hope I can create much more content for you, with this incredible tool.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2010/04/15/brand-new-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dissertação de Mestrado</title>
		<link>http://www.agileandart.com/2009/11/04/dissertacao-de-mestrado/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dissertacao-de-mestrado</link>
		<comments>http://www.agileandart.com/2009/11/04/dissertacao-de-mestrado/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 18:41:00 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Publications]]></category>
		<category><![CDATA[computação e arte]]></category>
		<category><![CDATA[dissertação]]></category>
		<category><![CDATA[fearless change]]></category>
		<category><![CDATA[ime]]></category>
		<category><![CDATA[linda rising]]></category>
		<category><![CDATA[mestrado]]></category>
		<category><![CDATA[padrões]]></category>
		<category><![CDATA[usp]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=69</guid>
		<description><![CDATA[Há algum tempo venho enrolando para publicar a minha dissertação de mestrado. O motivo dessa enrolação é bem simples: eu não terminei de revisar a dissertação. Foram vários e vários comentários que a banca fez no dia da defesa e que eu tinha que alterar no texto. Bom, eu fiz a primeira revisão e mandei [...]]]></description>
				<content:encoded><![CDATA[<p><iframe id="doc_36591" src="http://www.scribd.com/embeds/55760901/content?start_page=1&amp;view_mode=list&amp;access_key=key-23r45gcp4s812spe4qh7" frameborder="0" scrolling="no" width="100%" height="600" data-auto-height="true" data-aspect-ratio="0.777636594663278"></iframe></p>
<p><span id="more-69"></span><br />
Há algum tempo venho enrolando para publicar a minha dissertação de mestrado. O motivo dessa enrolação é bem simples: eu não terminei de revisar a dissertação. Foram vários e vários comentários que a banca fez no <a href="http://agileandart.blogspot.com/2009/05/master-thesis-defense-video.html">dia da defesa</a> e que eu tinha que alterar no texto.</p>
<div>Bom, eu fiz a primeira revisão e mandei para o meu orientador, mas ele me mandou de volta com mais trocentas mil coisas para mudar. Enfim&#8230; é um processo infinito! E o pior é que eu entrei em outra rotina, que fez com que eu tirasse totalmente o foco do mestrado. Como a banca no final aprovou a tese, eu tenho apenas um compromisso moral de revisá-la, o que torna a coisa muito mais difícil de ser terminada. Ou seja, não sei quando vou terminar, se é que eu vou terminar um dia.</div>
<div>Enquanto isso, vou assumir que a versão que eu tenho já está boa o suficiente para publicar num blog. Tudo bem: segundo os acadêmicos, não está boa o suficiente para ser publicada num jornal científico ou na biblioteca digital da USP. Mas isso é assunto para outra sindicância&#8230;</div>
<div>Algumas pessoas já leram versões preliminares e parciais dessa dissertação. Algumas partes do texto já foram publicadas, parcialmente em posts desse blog. A tese é, no final das contas, um relato da minha experiência dos últimos 3 anos trabalhando na Locaweb e dos últimos 15 anos como desenvolvedor de software e aluno de Ciência da Computação no IME.</div>
<div>Quem tiver paciência de ler as 145 páginas.</div>
<div>. O texto está bem dividido em duas partes quase distintas:</div>
<div>
<ul>
<li>A primeira fala sobre Padrões para Introduzir Novas Ideias, como foi a utilização deles na implantação de métodos ágeis na Locaweb.</li>
<li>A segunda fala sobre as relações entre Arte e o Desenvolvimento de Software e faz o link com a primeira parte com o padrão &#8216;Faça Arte&#8217;</li>
</ul>
<div>Como eu disse, ainda faltam fazer as últimas alterações sugeridas pelo meu orientador. Continuo aceitando sugestões e críticas de todos. Se ninguém me escrever nada, poderá ser por 2 motivos:</div>
<div>
<ol>
<li>Ninguém leu o texto</li>
<li>O texto está perfeito</li>
</ol>
<div>Como sou um homem livre e de bons costumes, caso ninguém mesmo comente, vou assumir o segundo como verdade&#8230; <img src='http://www.agileandart.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2009/11/04/dissertacao-de-mestrado/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Entrevista para a Bluesoft no Encontro Ágil</title>
		<link>http://www.agileandart.com/2009/10/28/entrevista-para-a-bluesoft-no-encontro-agil/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=entrevista-para-a-bluesoft-no-encontro-agil</link>
		<comments>http://www.agileandart.com/2009/10/28/entrevista-para-a-bluesoft-no-encontro-agil/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 18:35:00 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[agile meeting]]></category>
		<category><![CDATA[bluesoft]]></category>
		<category><![CDATA[brasil]]></category>
		<category><![CDATA[daniel cukier]]></category>
		<category><![CDATA[encontro ágil]]></category>
		<category><![CDATA[entrevista]]></category>
		<category><![CDATA[interview]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=68</guid>
		<description><![CDATA[Agradeço a todo pessoal da Bluesoft por me oferecer a oportunidade de mostrar o meu trabalho. Nessa entrevista, falo brevemente sobre Padrões para Introduzir Novas Ideias. Mais detalhes podem ser encontrados no meu blog. Blog da Bluesoft]]></description>
				<content:encoded><![CDATA[<p>Agradeço a todo pessoal da <a href="http://bluesoft.wordpress.com/">Bluesoft</a> por me oferecer a oportunidade de mostrar o meu trabalho. Nessa entrevista, falo brevemente sobre Padrões para Introduzir Novas Ideias. Mais detalhes podem ser encontrados no meu blog.</p>
<p><object width="400" height="220"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always"><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7170746&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=ff9933&amp;fullscreen=1"><embed src="http://vimeo.com/moogaloop.swf?clip_id=7170746&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=ff9933&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="220"></embed></object>
<div></div>
<div><a href="http://bluesoft.wordpress.com/">Blog da Bluesoft</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2009/10/28/entrevista-para-a-bluesoft-no-encontro-agil/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Arte e Ciência da Computação &#8211; de volta aos primórdios</title>
		<link>http://www.agileandart.com/2009/07/23/arte-e-ciencia-da-computacao-de-volta-aos-primordios/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=arte-e-ciencia-da-computacao-de-volta-aos-primordios</link>
		<comments>http://www.agileandart.com/2009/07/23/arte-e-ciencia-da-computacao-de-volta-aos-primordios/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 23:19:00 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=58</guid>
		<description><![CDATA[Muitas pessoas me perguntaram qual foi o resultado da minha defesa de mestrado e qual avaliação que a banca fez. Nós tínhamos uma câmera filmando a defesa, mas a fita acabou (#fail) justamente um pouco depois de a banca começar a argumentar sobre a dissertação. Somente as pessoas que estavam presentes tiveram o privilégio de [...]]]></description>
				<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t3QKIVOmzys/Smj-P33JPqI/AAAAAAAAC24/xwOd87YSHG0/s1600-h/IMG_9268.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_t3QKIVOmzys/Smj-P33JPqI/AAAAAAAAC24/xwOd87YSHG0/s400/IMG_9268.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5361814905031311010" /></a>
<div>Muitas pessoas me perguntaram qual foi o resultado da <a href="http://agileandart.blogspot.com/2009/05/master-thesis-defense-video.html">minha defesa de mestrado</a> e</div>
<div>qual avaliação que a banca fez. Nós tínhamos uma câmera filmando a defesa, mas a fita acabou (#fail) justamente um pouco depois de a banca começar a argumentar sobre a dissertação. Somente as pessoas que estavam presentes tiveram o privilégio de saber qual foi o impacto que essa defesa teve no <a href="http://www.ime.usp.br/">Instituto de Matemática e Estatística da USP</a>. Digo isso não para me gabar do meu trabalho, mas porque o fato foi realmente EMOCIONANTE  e, sem brincadeira, teve gente que até chorou!</div>
<p><span id="more-58"></span>
<div></div>
<div>Vou tentar resumir brevemente algumas coisas. Provavelmente não vou lembrar de tudo, mas acho que conseguirei saciar a curiosidade de alguns. Quanto a apresentação da defesa em si, só recebi elogios. Mas logo que essa apresentação que vocês assistiram terminou, comecei a ser literalmente massacrado pelo meu texto na dissertação. A banca não perdoou e criticou muito o meu trabalho. &#8220;Eu procurei ouvi-los e, quer saber, ajudou muito!&#8221; &#8211; tudo que eu aprendi durante quatro anos estudando padrões para introduzir novas ideias serviu demais nesse dia. Eles eram os céticos, eu tinha de ouvi-los.</div>
<div></div>
<div>O principal ponto levantado era o de que a minha dissertação estava mais para livro do que para tese de mestrado. Segundo a banca, aquele não era um trabalho científico. Agora eu vou contar incrível, que poucas pessoas sabem:</div>
<div></div>
<div>Um dos membros da banca era suplente de outro professor que não veio. É regra escolher um suplente para cada membro da banca, em caso de enfermidade ou impossibilidade de o membro escolhido comparecer. Na verdade, depois da defesa, eu fiquei sabendo que o membro da banca que não veio não estava doente ou teve outro compromisso. Ele não veio simplesmente porque ele considerou o meu trabalho uma afronta e que ele nunca aprovaria um absurdo daqueles. Mas tudo bem, o suplente que veio no lugar dele veio e, no final, aprovou o trabalho.</div>
<div></div>
<div>Mas como é que a banca afinal aprovou o trabalho, se ele foi tão criticado? Aí vem a parte mais emocionante daquele dia. Vamos recapitular: a banca tinha 3 membros &#8211; um deles era o meu orientador, o segundo era um professor escolhido e o terceiro era o suplente do professor que não veio por não gostar do trabalho. Além desses 3, um quarto professor estava presente na defesa. Era o suplente do segundo professor. Ele quis, por livre vontade, assistir a defesa. Depois que os três integrantes oficiais da banca falaram, o quarto professor pediu a palavra e começou a refutar todos os argumentos contra que tinham sido levantados pela banca. Ele me defendeu!</div>
<div></div>
<div>O resultado final é que o trabalho foi aprovado, com algumas ressalvas. Na visão da banca, eu precisaria tornar a dissertação mais científica, fazer afirmações fortes somente com referências fortes. A minha grande indagação é que boa parte da dissertação era justamente questionar a falta de humanidade na computação. Um texto só é científico se ele é sério, objetivo, chato, impessoal, em linguagem de máquina? O meu texto não tinha nada disso. Eu tomei (propositadamente) várias liberdades, usei uma linguagem mais informal, quebrei regras, usei toda subjetividade que eu podia. Agora eu teria que mudá-lo para ser o que eles queriam. Claro que eu não ia abrir mão do meu ponto. </div>
<div></div>
<div>Um membro da banca me perguntou: </div>
<div> &#8211; Você não acha que está sendo muito pretensioso quando diz que tem o objetivo de &#8220;fazer com que as ideias dessa dissertação se disseminem para que outros realizem novos trabalhos científicos e tecnológicos em benefício da humanidade.&#8221;?</div>
<div></div>
<div>O professor que me defendeu disse que eu estava certíssimo e que esse trabalho realmente continha elementos que poderiam beneficiar as pessoas. Ponto.</div>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_t3QKIVOmzys/Smj_rIXTBDI/AAAAAAAAC3A/uOXX3CGt0XA/s1600-h/IMG_9077.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_t3QKIVOmzys/Smj_rIXTBDI/AAAAAAAAC3A/uOXX3CGt0XA/s400/IMG_9077.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5361816472829232178" /></a>
<div></div>
<div>Outra indagação foi:</div>
<div> &#8211; Porque você não foi defender essa tese na Filosofia ou na Faculdade de Educação?</div>
<div></div>
<div>Como assim??? Tudo que eu estava falando ali dizia respeito a COMPUTAÇÃO! Sei que a pergunta do professor na foi maldosa, mas eu não tive organização suficiente na hora para explicar para ele que eu estava falando da falta de HUMANIDADE dentro da COMPUTAÇÃO. Como diz Peter Brook: &#8220;Nos dias de hoje, a tragédia da Arte é que nela não há Ciência; e a tragédia da Ciência é que nela não há emoção&#8221;.</div>
<div></div>
<div>
<div>No final, refiz algumas partes, tentando realmente buscar referências para dar força a tudo aquilo que eu estava falando, mas mantendo a minha &#8220;linha artística&#8221; de expressar as ideias. Tomei o cuidado de explicar, logo no início do texto, que ele era diferente do habitual, para que leitores desavisados não se sentissem ofendidos. Assim que meu orientador revisar a versão final da tese eu coloco ela aqui para que todos possam ler. Não prometo que ela é tão divertida quanto a apresentação de defesa, mas acho que ela está bem fácil de ler (pelo menos algumas pessoas que não entendem nada de computação leram e me disseram que gostaram).</div>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_t3QKIVOmzys/Smj_reymlYI/AAAAAAAAC3I/YRzTr9nKOXU/s1600-h/IMG_9146.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_t3QKIVOmzys/Smj_reymlYI/AAAAAAAAC3I/YRzTr9nKOXU/s400/IMG_9146.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5361816478849340802" /></a>
<div></div>
<div>O importante é que eu fiquei muito empolgado com toda essa repercussão da minha defesa. Vou tentar dedicar um tempo fazendo mais paródias de computação, criar outras peças como essa (acreditem, deu trabalho!). Acho que vale muito a pena, porque sei que esse tipo de conteúdo enriquece muito as pessoas, elas realmente se envolvem mais num assunto quando ativamos o lado direito do cérebro. </div>
<div></div>
<div>No meu próximo post falarei sobre todas as referências que encontrei relacionando Ciência e Computação com Arte. Só para dar uma ideia do que eu quero dizer, <a href="http://www-cs-staff.stanford.edu/~uno/">Donald Knuth</a>, que escreveu um dos livros mais famosos da Computação:<a href="http://www-cs-faculty.stanford.edu/~knuth/taocp.html"> The Art of Computer Programming</a>,</div>
<div> afirmou que a programação deixou de ser uma arte para tornar-se ciência por uma simples razão: começamos a chamá-la de &#8220;ciência da computação&#8221;</div>
<div></div>
<div>OBS: as fotos foram tiradas durante a minha viagem de lua-de-mel. Em breve, publicarei algumas no <a href="http://picasaweb.google.com/danicuki/">meu picasa</a>.</div>
<div></div>
<div>OBS2: faltou a explicação do título desse post. Na verdade a verdadeira explicação virá no próximo post. Aguardem!</div>
</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2009/07/23/arte-e-ciencia-da-computacao-de-volta-aos-primordios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
