<?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>Via SIG &#187; Avançado</title>
	<atom:link href="http://blog.viasig.com/category/avancado/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.viasig.com</link>
	<description>Um blog sobre SIG, focado na tecnologia, programação e gestão.</description>
	<lastBuildDate>Mon, 06 Feb 2012 13:34:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Desenvolver aplicações SIG de forma Agile!</title>
		<link>http://blog.viasig.com/2009/01/desenvolver-aplicacoes-sig-de-forma-agile/</link>
		<comments>http://blog.viasig.com/2009/01/desenvolver-aplicacoes-sig-de-forma-agile/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 17:17:03 +0000</pubDate>
		<dc:creator>duarte</dc:creator>
				<category><![CDATA[Avançado]]></category>
		<category><![CDATA[Gestão]]></category>
		<category><![CDATA[SIG]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://blog.viasig.com/?p=220</guid>
		<description><![CDATA[Estou a digerir tudo o que vi na formação de 3 dias sobre metodologias Agile e Scrum e este post servirá como bloco de notas. Esta semana estive 3 dias em formação com o excelente formador Mitch Lacey. Este sr. tem já uma grande experiência em projectos de desenvolvimento de software, e ouvi-lo foi realmente [...]]]></description>
			<content:encoded><![CDATA[<p>Estou a digerir tudo o que vi na formação de 3 dias sobre metodologias Agile e Scrum e este post servirá como bloco de notas.</p>
<p>Esta semana estive 3 dias em formação com o excelente formador <a title="Sítio do Mitch Lacey" href="http://mitchlacey.com/" target="_blank">Mitch Lacey</a>. Este sr. tem já uma grande experiência em projectos de desenvolvimento de software, e ouvi-lo foi realmente uma experiência enriquecedora.</p>
<p>Não vou entrar em grandes detalhes teóricos sobre Agile/Scrum, porque não sou definitavemente a pessoa indicada para o fazer. Vou em vez disso enumerar os pontos que mais me impressionaram e que mais valor terão se os integrar na forma como a &#8220;minha&#8221; equipa funciona. Portanto, as afirmações seguintes devem ser encaradas como uma perspectiva muito pessoal&#8230;</p>
<p>Agile é um conjunto de práticas que visam desenvolver um projecto de forma iteractiva, com ciclos curtos entre versões intermédias antes de chegar à entrega final, com vista a reduzir os riscos associados a este tipo de projectos &#8211; sendo o maior entregar um produto que não se ajusta à visão do cliente!</p>
<p>Scrum é a metodologia Agile mais difundida, e obteve o seu nome do Rugby: scrum é a altura em que os jogadores se reunem para reiniciar o jogo, e ambas as equipas disputam a bola. Em Agile, Scrum é um método em que uma equipa de desenvolvimento se concentra ferozmente em terminar um conjunto de tarefas num prazo curto &#8211; tipicamente 14 ou 28 dias &#8211; e se compromete a no final do prazo produzir uma versão funcional do produto que está a desenvolver.</p>
<p>Qual é a grande diferença em relação ao processo tradicional (designado &#8220;<em>Waterfall</em>&#8221; ou &#8220;<em>em Cascata</em>&#8220;)? É que no processo Waterfall, os requisitos para a aplicação a desenvolver são definidos à partida, na fase de levantamento e definição dos mesmos. Em seguida, esta lista de especificações é trabalhada com o cliente final, e atinge-se um acordo, sendo fechada a lista de itens a implementar. E é aqui que este método tem a sua maior fraqueza: é pouco flexível, e não considera facilmente requisitos que se alteram com o tempo (alguém se identifica com esta experiência??). A analogia de construir uma casa é muito clarificadora: ao olhar para a planta da minha futura casa, posso ficar muito satisfeito com o que está planeado. Mas, mais tarde, ao andar pela estrutura já construída da casa, vou conseguir obter uma visão mais clara do que estava na planta, e consequentemente vou definir melhoramentos e até novas funções que quero ter na versão final da casa. Isto é um processo natural e não deve ser combatido. E é o que os métodos Agile nos oferecem: ao cliente final permite algum controlo durante a vida do projecto, e à equipa de desenvolvimento permite um grande poder de adaptação à mudança, permitindo concluir o projecto dentro do prazo e do orçamento, mesmo absorvendo alterações aos pressupostos iniciais. E para descansar os espíritos mais desconfiados, resta acrescentar que esta metodologia é reconhecida pelo PMI, e é usada pelas maiores empresas de software como Microsoft ou IBM.</p>
<p>Porque é que estas técnicas me interessaram? Os pontos mais importantes:</p>
<ul>
<li>A equipa de desenvolvimento com que trabalho é pequena &#8211; podemos contar com 2,5 técnicos (sim, temos realmente uma metade de técnico!), e somos facilmente dispersados por várias solicitações em simultâneo</li>
<li>O meio onde nos inserimos é muito dinâmico &#8211; as alterações aos requisitos são muito frequentes, e a sua definição inicial é muito difícil de obter e estabilizar</li>
<li>Trabalhamos para o &#8220;Cliente Interno&#8221;, onde as relações informais dominam, e os processos formais inerentes ao método Waterfall dificilmente são aplicados e respeitados</li>
</ul>
<p>Da abordagem Scrum, estes são os pontos que mais me agradam e que vejo possibilidade de implementar rapidamente:</p>
<ol>
<li>Definir o &#8220;Product Backlog&#8221;, que mais não é que uma lista de funções a implementar numa aplicação, ordenada por prioridade</li>
<li>Definir o &#8220;Sprint Backlog&#8221;, que é a lista prioritizada de funções que vamos implementar no próximo ciclo de 14 dias (o sprint)</li>
<li>Reuniões relâmpago diárias, onde rapidamente (15 min.) cada um dos elementos da equipa percorre estes 3 pontos &#8211; o que concretizaste ontem, o que vais fazer hoje, e tens algum ponto crítico?</li>
<li>Estar atento a solicitações de alterações ou novas funções, mas lutar por integrá-las no Product Backlog, que poderá ser re-prioritizado todas as semanas (mas as funções só podem entrar num sprint no seu início)</li>
<li>Consciencializar todos os elementos da equipa de que todos são responsáveis pela equipa! Todos se devem preocupar com a saúde emocional da equipa e com a concretização dos compromissos assumidos com o exterior (notem aqui a grande diferença mental entre cumprir objectivos e cumprir compromissos)</li>
<li>Obter uma versão funcional no final de cada Sprint! E demonstrá-la. Na teoria Scrum, a demo deve ser feita ao cliente. No meu caso, parece-me mais plausível realizar uma demo interna à equipa, para validar a direcção dada ao projecto, detectar incongruências, enfim, andar pela estrutura da casa e ver se é como imaginámos quando fizemos a planta&#8230;</li>
</ol>
<p>É realmente uma forma de trabalhar muito aliciante, e que de alguma forma torna o desenvolvimento de projectos mais humano.</p>
<p>Algumas ferramentas consideradas essenciais a uma boa prática Agile já utilizamos na equipa:</p>
<ul>
<li>Repositório de código e Controle de versões &#8211; usamos o <a title="Homepage do Subversion, sistema de controle de versões" href="http://subversion.tigris.org/" target="_blank">SVN</a>, e o <a title="Homepage do AnkhSVN, plugin para o Visual Studio para controle de versões com SVN" href="http://ankhsvn.open.collab.net/" target="_blank">AnkhSVN</a> para integrar com o Visual Studio. Não há checkin de código que não compile. Este é um passo fundamental na organização da equipa!</li>
<li>Documentação &#8211; embora não tenhamos ainda a prática de documentação automática do código, embora já se tenha discutido o assunto várias vezes, usamos um Wiki para documentar quer a vertente técnica quer a vertente de utilização das aplicações</li>
</ul>
<p>E das peças que nos faltam, o que podemos integrar no nosso caso particular?</p>
<ul>
<li>Teste unitários &#8211; é algo que deveremos implementar, mas que está ainda algo longíquo de ser possível&#8230; é necessário primeiro re-organizar o código em componentes suficientemente pequenos, modulares, para possibilitar esta técnica. Mas os ganhos são óbvios &#8211; rapidez de efectuar testes e na detecção de bugs</li>
<li>Test Driven Development &#8211; ver ponto anterior, é algo desejável, mas cuja execução obriga a remodelar o repositório de código existente. Talvez a longo prazo seja possível&#8230;</li>
</ul>
<p>Para mais informação recomendo vivamente a leitura deste artigo: &#8220;<a title="artigo sobre gestão de projectos SIG com Agile" href="http://www.gisdevelopment.net/magazine/global/2008/february/32.htm" target="_blank">Agile Project Management for GIS</a>&#8220;. Muitos mais podem ser encontrados &#8220;googlando&#8221; a Internet (como por exemplo este na revista <a title="Artigo sobre a metodologia Agile na revista PMNetwork" href="http://www.pmnetwork-digital.com/pmnetwork/200901open/" target="_blank">PM Network</a>, pp 42). E para aqueles que ficarem convencidos, fica a referência do curso &#8211; <a title="Sítio com o curso Scrum Master organizado pela Fullsix" href="http://www.fullsix.pt/scrum/" target="_blank">Fullsix</a>.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;counturl=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;count=none&amp;text=Desenvolver%20aplica%C3%A7%C3%B5es%20SIG%20de%20forma%20Agile%21" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;counturl=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;count=none&amp;text=Desenvolver%20aplica%C3%A7%C3%B5es%20SIG%20de%20forma%20Agile%21" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_buzz" href="http://www.addtoany.com/add_to/google_buzz?linkurl=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;linkname=Desenvolver%20aplica%C3%A7%C3%B5es%20SIG%20de%20forma%20Agile%21" title="Google Buzz" rel="nofollow" target="_blank"><img src="http://blog.viasig.com/wp-content/plugins/add-to-any/icons/google_buzz.png" width="16" height="16" alt="Google Buzz"/></a><a class="a2a_button_blogger_post" href="http://www.addtoany.com/add_to/blogger_post?linkurl=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;linkname=Desenvolver%20aplica%C3%A7%C3%B5es%20SIG%20de%20forma%20Agile%21" title="Blogger Post" rel="nofollow" target="_blank"><img src="http://blog.viasig.com/wp-content/plugins/add-to-any/icons/blogger.png" width="16" height="16" alt="Blogger Post"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;linkname=Desenvolver%20aplica%C3%A7%C3%B5es%20SIG%20de%20forma%20Agile%21" title="WordPress" rel="nofollow" target="_blank"><img src="http://blog.viasig.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;linkname=Desenvolver%20aplica%C3%A7%C3%B5es%20SIG%20de%20forma%20Agile%21" title="Email" rel="nofollow" target="_blank"><img src="http://blog.viasig.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.viasig.com%2F2009%2F01%2Fdesenvolver-aplicacoes-sig-de-forma-agile%2F&amp;title=Desenvolver%20aplica%C3%A7%C3%B5es%20SIG%20de%20forma%20Agile%21" id="wpa2a_2">Partilhar</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.viasig.com/2009/01/desenvolver-aplicacoes-sig-de-forma-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

