<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9186903533526894057</id><updated>2011-10-04T13:10:43.601-07:00</updated><category term='profissional'/><category term='SOLID'/><category term='C#'/><category term='TMM'/><category term='Sistemas Embarcados'/><category term='sistemas críticos'/><category term='collections'/><category term='rock star'/><category term='tecnologia da informação'/><category term='teste de software'/><title type='text'>Edwin Carlo Ribeiro Marinho</title><subtitle type='html'>Voltado ao desenvolvimento de softwares e prevenção de falhas durante este processo.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-7343474146128676926</id><published>2011-09-07T12:31:00.000-07:00</published><updated>2011-09-07T12:45:19.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='collections'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='SOLID'/><title type='text'>List ou IList: eis a questão</title><content type='html'>&lt;p&gt;&lt;blockquote&gt;Este texto é uma tradução do &lt;a href="http://www.diveintocode.com/2011/09/list-or-ilist-that-is-question.html"&gt;post&lt;/a&gt; que escrevi para o blog &lt;a href="http://www.diveintocode.com/"&gt;Dive Into Code&lt;/a&gt;.&lt;/blockquote&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Em um dia de reflexão durante uma conversa no trabalho, surge uma questão: Por que tantos desenvolvedores utilizam sempre referência para List&amp;lt;T&amp;gt; no lugar de IList&amp;lt;T&amp;gt; em C#? Mas a resposta convincente para esta pergunta não apareceu. Dessa forma o &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;princípio&lt;/a&gt; de &lt;a href="http://www.objectmentor.com/resources/articles/dip.pdf"&gt;depender de abstrações e não de implementações concretas&lt;/a&gt; estaria sendo desprezado.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Aparentemente &lt;a href="http://frank.vanpuffelen.net/2007/07/list-vs-ilist.html"&gt;não é a primeira vez que esta dúvida&lt;/a&gt; aparece. E é possível notar que boa parte dos desenvolvedores que usam List&amp;lt;T&amp;gt; no lugar de IList&amp;lt;T&amp;gt; já foram programadores Java um dia. Seria este o motivo?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/8bc1fexb(v=vs.71).aspx"&gt;Em C# costuma-se utilizar a letra “I” no início do nome de interfaces&lt;/a&gt;. Pessoas que já programaram em Java poderiam se confundir, uma vez que &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/List.html"&gt;List&lt;/a&gt; em Java representa a interface e &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/LinkedList.html"&gt;LinkedList&lt;/a&gt; e &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Stack.html"&gt;Stack&lt;/a&gt; seriam exemplos de implementações. E é importante notar que, em C#, &lt;a href="http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx"&gt;LiskedList&amp;lt;T&amp;gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/7977ey2c.aspx"&gt;Queue&amp;lt;T&amp;gt;&lt;/a&gt; e &lt;a href="http://msdn.microsoft.com/en-us/library/3278tedw.aspx"&gt;Stack&amp;lt;T&amp;gt;&lt;/a&gt; não implementam IList&amp;lt;T&amp;gt;, pois não fornecem acesso por índice.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Torna-se necessário entender mais a classe genérica &lt;a href="http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx"&gt;List&amp;lt;T&amp;gt;&lt;/a&gt;, e as interfaces que ela implementa (&lt;a href="http://msdn.microsoft.com/en-us/library/9eekhta0.aspx"&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/92t2ye13.aspx"&gt;ICollection&amp;lt;T&amp;gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/5y536ey6.aspx"&gt;IList&amp;lt;T&amp;gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx"&gt;IEnumerable&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.icollection.aspx"&gt;ICollection&lt;/a&gt; e &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.ilist.aspx"&gt;IList&lt;/a&gt;). Assim, tais interfaces poderiam ser utilizadas como referência no lugar da classe concreta.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Uma vez que foi entendido um pouco mais sobre as interfaces e o que elas forneciam em termos de funcionalidade, era necessário fazer as alterações em algum projeto que fosse utilizado sempre List&amp;lt;T&amp;gt;. No primeiro momento, substituindo ao menos o retorno de um método de List&amp;lt;T&amp;gt; para IEnumerable&amp;lt;T&amp;gt;. Com esta mudança, apareceram alguns erros de compilação, faltava o método Add(T). Porém com ICollection&amp;lt;T&amp;gt; o código funcionou normalmente. Em alguns outros casos o IEnumerable&amp;lt;T&amp;gt; atendia a necessidade, pois só era necessário percorrer os ítens da lista retornada.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Mais adiante, foi encontrada uma situação em que era necessário acessar um ítem específico da estrutura, que foi resolvido utilizando a interface IList&amp;lt;T&amp;gt; como retorno. Até que apareceu um AddRange(IEnumerable&amp;lt;T&amp;gt;) de List&amp;lt;T&amp;gt; sendo utilizado, que poderia ser facilmente substituído por um extension method para ICollection.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Mas depois de todas as alterações surge a pergunta número dois: Todas as operações estavam sendo realizadas no local correto? Ficava mais fácil notar que determinadas classes &lt;a href="http://www.objectmentor.com/resources/articles/srp.pdf"&gt;estavam fazendo mais do que deveriam fazer&lt;/a&gt;, uma vez que o retorno de cada método era mais consciente.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;No final, a refatoração obteve sucesso, todos os retornos de métodos que eram List&amp;lt;T&amp;gt; foram substituídos por uma interface adequada. Com um pouco mais de pesquisa foi possível notar que não só desenvolvedores com costume da interface List em Java faziam referência para List&amp;lt;T&amp;gt;, mas muitas pessoas utilizam a referência para List&amp;lt;T&amp;gt; devido aos recursos providos pela implementação. Um método como AddRange(IEnumerable&amp;lt;T&amp;gt;) poderia ser chamado em qualquer local. Uma proposta tentadora. Entretanto, depender de abstrações faz com que o código se torne mais flexível. E depender de interfaces que contem apenas as funcionalidades necessárias, limita a não tentar fazer em uma classe o que não deveria ser responsabilidade dela.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-7343474146128676926?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/7343474146128676926/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2011/09/list-ou-ilist-eis-questao.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/7343474146128676926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/7343474146128676926'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2011/09/list-ou-ilist-eis-questao.html' title='List&lt;T&gt; ou IList&lt;T&gt;: eis a questão'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-123948293970012465</id><published>2011-04-26T05:18:00.000-07:00</published><updated>2011-04-26T06:08:19.703-07:00</updated><title type='text'>Caixa de papel, vidro, webcam e voilà! Um piano multitoque</title><content type='html'>&lt;div style="text-align: justify;"&gt;Na faculdade, mais especificamente na cadeira de Processamento Digital de Imagem e Voz, era necessário a elaboração de um projeto que pudesse utilizar de conceitos demonstrados nas aulas. Surgiu, então, a idéia de &lt;a href="http://twitter.com/marcuslira"&gt;Marcus Lira&lt;/a&gt; para criar um piano multitoque.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Inicialmente a idéia parecia complicada de ser alcançada em apenas um período. Alguns integrantes do grupo estariam concentrando forças no trabalho de conclusão de curso e todos tinham outras cadeiras a cumprir. Mas seguimos com esse projeto.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;O que estávamos nos propondo a fazer não se tratava de algo novo e tinhamos &lt;a href="http://www.nuigroup.com/"&gt;direcionamento&lt;/a&gt; para seguir. Utilizamos, então, o &lt;a href="http://ccv.nuigroup.com/"&gt;CCV&lt;/a&gt; para fazer boa parte do nosso trabalho. Como iríamos usar o protocolo &lt;a href="http://www.tuio.org/"&gt;TUIO&lt;/a&gt;, procuramos uma &lt;a href="http://www.tuio.org/?software"&gt;implementação&lt;/a&gt; de cliente que pudesse atender nossas necessidades. E assim, selecionamos o &lt;a href="http://www.mt4j.org/"&gt;MT4j&lt;/a&gt; para desenvolver a UI.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para a reprodução do som do piano escolhemos utilizar o &lt;a href="http://code.compartmental.net/tools/minim/"&gt;Minim&lt;/a&gt; 2.1.0 BETA.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;O código da aplicação desenvolvida pode ser encontrado no repositório do &lt;a href="http://code.google.com/p/mtpiano/"&gt;Google code&lt;/a&gt;. E como resultado segue o primeiro vídeo. Não sou bom em tocar piano, então não tente encontrar uma melodia.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/Sj0EDWyd1rM" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como as coisas estavam meio bagunçadas nesse primeiro vídeo, foi feita uma nova versão. Nessa segunda versão do device, houve melhora na captação do toque devido a iluminação que entrava na caixa.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/bh1uF5at00I" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Mais informações, sobre como o projeto foi realizado, podem ser encontradas no &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=sites&amp;amp;srcid=ZGVmYXVsdGRvbWFpbnxlZHdpbmNhcmxvfGd4OjZmMGYzN2IwMmIwMGYwMTQ&amp;amp;pli=1"&gt;relatório que escrevemos&lt;/a&gt;. E sim, o trabalho foi simples de ser executado.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-123948293970012465?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/123948293970012465/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2011/04/caixa-de-papel-vidro-webcam-e-voila-um.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/123948293970012465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/123948293970012465'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2011/04/caixa-de-papel-vidro-webcam-e-voila-um.html' title='Caixa de papel, vidro, webcam e voilà! Um piano multitoque'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/Sj0EDWyd1rM/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-4646203316694238447</id><published>2011-04-18T10:29:00.000-07:00</published><updated>2011-04-18T10:35:53.051-07:00</updated><title type='text'>Como testar quando o software não tem botões?</title><content type='html'>&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; "&gt;&lt;/p&gt;&lt;div style="text-align: center;color: rgb(85, 85, 85); line-height: 20px; "&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: rgb(33, 39, 19); line-height: 25px; " &gt;&lt;b&gt;Texto que escrevi para o blog &lt;a href="http://bytesdontbite.com/2011/04/13/como-testar-quando-o-software-nao-tem-botoes/" style="color: rgb(136, 136, 136); text-decoration: none; "&gt;Bytes don't Bite!&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(85, 85, 85); line-height: 20px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(85, 85, 85); line-height: 20px; "&gt;Mencionei &lt;a href="http://bytesdontbite.com/2011/03/11/incentivando-uma-briga/" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;anteriormente&lt;/a&gt; da importância, para uma pessoa que trabalha com testes de software, de se ter conhecimentos sobre como desenvolver e ter uma visão do ambiente em que o software opera. Tais conhecimentos podem ser considerados facultativos para diversos profissionais de teste, mas em certos casos se tornam obrigatórios.&lt;/div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="display: inline; line-height: 20px;"&gt;&lt;img class="alignright" src="https://lh5.googleusercontent.com/_C02pXgBYFJI/TaCDpSxnHDI/AAAAAAAAAbU/DV_Mjyg3PQ8/botao-panico.jpg" alt="" style="text-align: justify;float: right; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 15px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline; max-width: 100%; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;O que acontece, por exemplo, quando não existe uma UI para testar? Este cenário acontece quando o software desenvolvido trata-se de uma &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Application_programming_interface" style="color: rgb(0, 141, 207); text-decoration: none; line-height: 20px; "&gt;API&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt; (Application Programming Interface). O &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.testinggeek.com/index.php/testing-types/testing-purpose/108-api-testing" style="color: rgb(0, 141, 207); text-decoration: none; line-height: 20px; "&gt;teste de API&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt; requer o desenvolvimento de uma aplicação que simule o uso real das chamadas.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;Uma vez que se trata de testes de API, Josh Poley menciona que muitas técnicas diferentes serão sugeridas, dependendo do testador. Entretanto, o mesmo apresenta &lt;a href="http://msdn.microsoft.com/en-us/library/cc300143.aspx" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;uma situação que funcionou bem para os testes do Sistema Operacional do Xbox&lt;/a&gt;.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;Participei de dois projetos em que aplicações eram desenvolvidas para que o produto principal pudesse ser testado. No primeiro, o produto desenvolvido continha implementações de &lt;a href="http://www.jcp.org/en/jsr/overview" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;JSRs&lt;/a&gt; para um emulador de &lt;a href="http://www.oracle.com/technetwork/java/javame/overview/index.html" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;J2ME&lt;/a&gt;. Nos testes, então, eram criadas aplicações J2ME, que tinham a proposta de avaliar as classes definidas em cada especificação.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;No outro projeto, foi criada uma API para comunicação com determinadas impressoras. Nesta aplicação, uma das funcionalidades era o envio de uma linguagem intermediária para API, que gerava um comando (&lt;a href="http://en.wikipedia.org/wiki/Printer_Command_Language" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;PCL&lt;/a&gt; / &lt;a href="http://en.wikipedia.org/wiki/Printer_Job_Language" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;PJL&lt;/a&gt; / &lt;a href="http://en.wikipedia.org/wiki/HPGL" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;HP-GL&lt;/a&gt;) correspondente e mandava para impressão. Para tal funcionalidade, era necessário o conhecimento das entradas e saídas esperadas (tanto da linguagem intermediária como do comando enviado para impressora). Os testes foram desenvolvidos em C++, simulando uma aplicação real que utilizaria a API.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;Mas antes de começar a desenvolver os testes, é necessário dedicar um tempo para o planejamento do que será testado. Dependendo da complexidade da aplicação, um documento de testes pode auxiliar nessa atividade.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;Já na criação dos testes, deve-se pensar como o ambiente pode ser preparado para identificar certas situações, como por exemplo, o uso de um arquivo corrompido ou a ausência de conexão de rede. A atividade de forçar falhas, em uma aplicação, pode ser considerada bem interessante. Uma vez que se detêm conhecimento para criar testes que forcem defeitos, o entusiasmo é enorme. Mas atenção, a prioridade deve ser dada ao fluxo principal, primeiro crie testes para as situações em que se espera que o software funcione.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;Alguns cenários são mais complexos de serem testados. Casos como atualização de estruturas de dados, modificação de certos recursos e chamadas da API que não possuem retorno, necessitam de alguma forma de verificação. Uma função que não tem retorno, por exemplo, deve mudar de alguma forma o estado da aplicação. Em um teste a uma chamada que remove algum valor de uma lista e não tem valor de retorno, pode ser necessário usar de chamadas para percorrer a lista e verificar os valores, tendo assim certeza de que o valor solicitado foi removido.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;&lt;img class="alignleft" src="https://lh6.googleusercontent.com/_C02pXgBYFJI/TaMiiyWHrJI/AAAAAAAAAbs/I3RBBGFBors/crash_test_dummy.jpg" alt="" width="300" style="text-align: justify;float: left; margin-top: 0px; margin-right: 15px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline; max-width: 100%; " /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;James Whittaker e Alan Jorgensen &lt;a href="http://pt.scribd.com/doc/2577595/API-Testing-Method" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;relataram&lt;/a&gt; que, em teste de API, alguns problemas interessantes para os testadores são: garantir que a aplicação varia os parâmetros das chamadas de modo a expor possíveis falhas; gerar combinações interessantes de parâmetros; configurar o ambiente externo e os dados internos que afetam a API; variar a seqüência de chamadas da API para exercitar de várias formas as funcionalidades.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;No blog de testes da Google, em um dos &lt;a href="http://googletesting.blogspot.com/2007/09/testing-applications-and-apis.html" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;posts&lt;/a&gt; é mencionado que testes de chamadas isoladas da API não conseguem simular o cenário real. Para uma calculadora, testar as chamadas isoladamente pode ser efetivo. Mas para aplicações em que a ordem das chamadas pode interferir no resultado, devem ser testadas tanto as chamadas isoladas como combinações entre elas.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;A organização dos testes é importante para facilitar a manutenção. Códigos bem escritos podem auxiliar no entendimento da equipe sobre o que está sendo testado. Então, caso possível, o uso de um guia com padrões de codificação é bem vindo. Dessa forma, a equipe irá se acostumar a escrever de forma que todos entendam. Quando o cenário de teste é complexo, a documentação no código ajuda a entender do que se trata.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;A qualidade do código de teste pode influenciar diretamente na qualidade do produto testado. Erros nos testes podem omitir falhas importantes nos produtos.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;Mas quem vigia os vigilantes? Quem testa o código de teste? Como garantir que os testes estão corretos? Quando se escreve códigos de teste, a atenção deve ser dobrada. Com isso é importante a cultura de revisão de código, programação em pares ou alguma outra forma que auxilie na diminuição de erros. Criar log da execução pode ajudar na identificação de problemas.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;Pelo fato de os testes serem parecidos, a prática do copy &amp;amp; paste vai parecer tentadora. Mas evitar esta prática pode evitar vários problemas. Recomendo uma &lt;a href="http://borba.blog.br/2011/02/todas-as-coisas-que-todo-programador-nao-pode-deixar-de-saber/" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;apresentação&lt;/a&gt; de Borba, para ter a visão dele sobre código duplicado. E, &lt;a href="http://bytesdontbite.com/2011/04/07/o-que-fazer-quando-voce-descobre-que-seu-codigo-esta-uma-merda/" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;se em algum momento achar que o código de teste pode melhorar&lt;/a&gt;, melhore!&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; color: rgb(85, 85, 85); line-height: 20px; "&gt;Nos projetos que trabalhei, a padronização dos testes foi um ponto importante, para transferência de conhecimento aos que precisavam entender o que estava sendo testado. Para o emulador de J2ME, foi criado um framework no qual as aplicações de teste deveriam ser desenvolvidas. Em ambos os projetos, certos testes precisavam de uma confirmação visual, mas ainda assim foi possível avaliar tais cenários, só demandava uma confirmação do testador. Nos testes foram contempladas variações de parâmetros e combinações de chamadas. Também foram utilizadas algumas técnicas de teste como &lt;a rel="nofollow" href="http://www.developsense.com/pairwiseTesting.html" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;pairwise&lt;/a&gt;, &lt;a rel="nofollow" href="http://en.wikipedia.org/wiki/Equivalence_partitioning" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;classe de equivalência&lt;/a&gt;, &lt;a rel="nofollow" href="http://en.wikipedia.org/wiki/Boundary_value_analysis" style="color: rgb(0, 141, 207); text-decoration: none; "&gt;valores limite&lt;/a&gt;, etc. Os testes eram documentados e tanto o documento como o código passavam por um processo de inspeção. Sempre que possível, os testes eram projetados para necessitarem da menor intervenção humana, realizando o maior número de testes ao apertar um único botão.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-4646203316694238447?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/4646203316694238447/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2011/04/como-testar-quando-o-software-nao-tem.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/4646203316694238447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/4646203316694238447'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2011/04/como-testar-quando-o-software-nao-tem.html' title='Como testar quando o software não tem botões?'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/_C02pXgBYFJI/TaCDpSxnHDI/AAAAAAAAAbU/DV_Mjyg3PQ8/s72-c/botao-panico.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-5030237615276402688</id><published>2011-03-22T08:49:00.000-07:00</published><updated>2011-03-22T08:53:22.046-07:00</updated><title type='text'>Incentivando uma briga</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt; &lt;/div&gt;&lt;p style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Texto que escrevi para o blog &lt;a href="http://bytesdontbite.wordpress.com/2011/03/11/incentivando-uma-briga/"&gt;Bytes don't Bite!&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Por muitas vezes refleti se &lt;a href="http://testobsessed.com/2010/10/20/testers-code/"&gt;as pessoas, que trabalham com testes de software, devem ter habilidades de desenvolvimento&lt;/a&gt;.  Não nego que possuir conhecimento do negócio é necessário para o  profissional da área de testes. Mas, entender sobre a estrutura do que é  testado, que antes de tudo é um &lt;strong&gt;software&lt;/strong&gt;, também é importante.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;James Whittaker, que já trabalhou com testes na &lt;a href="http://blogs.msdn.com/b/james_whittaker"&gt;Microsoft&lt;/a&gt; e atualmente trabalha na &lt;a href="http://googletesting.blogspot.com/2011/01/how-google-tests-software.html"&gt;Google&lt;/a&gt;, escreveu um &lt;a href="http://www.amazon.com/How-Break-Software-Practical-Testing/dp/0201796198"&gt;livro&lt;/a&gt;  que demonstra algumas técnicas para se “quebrar” um software. As falhas  exibidas são bem interessantes, e possíveis de serem atingidas em  abordagem &lt;a href="http://en.wikipedia.org/wiki/Black-box_testing"&gt;caixa-preta&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;Como testador, pude experimentar algumas técnicas mencionadas no  livro. Vou relatar sobre a aplicação de uma dessas técnicas em um  projeto que trabalhei. No software desenvolvido, um usuário poderia  criar menus que seriam acessados através de um servidor. Quando acessado  um determinado item do menu, uma ação seria acionada. Uma das ações  disponíveis era verificar o usuário que estava acessando o item e  direcionar para outra ação.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;img src="https://lh5.googleusercontent.com/_C02pXgBYFJI/TXgixj-CMDI/AAAAAAAAAa4/SjhaWO9aYMw/menu_01.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;Na imagem acima, quando um usuário A acessa o ITEM 2 do MENU, a ação 2  é chamada. Uma vez que a AÇÃO 2 identifica que é o usuário A, a AÇÃO 3 é  acionada. Olhando para este exemplo, tendo em vista que &lt;strong&gt;uma ação de decisão envolve processamento&lt;/strong&gt;, já é possível reproduzir a falha. A idéia é &lt;strong&gt;forçar um processo a ser executado várias vezes&lt;/strong&gt;. Imagine uma ação parecida com a AÇÃO 2 no lugar da AÇÃO 3, apontando para AÇÃO 2 quando o usuário for A.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;img src="https://lh5.googleusercontent.com/_C02pXgBYFJI/TXgixrF-NII/AAAAAAAAAa8/j8puS88uf5c/menu_02.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;Agora, imagine o usuário A acessando o MENU pelo servidor. Ele tenta  acessar uma vez o ITEM 2, vai para a AÇÃO 2, que o direciona para AÇÃO  3. A AÇÃO 3 o manda de volta para AÇÃO 2, que o manda mais uma vez para  AÇÃO 3. Vai para AÇÃO 2… Deu pra entender que nunca vai parar? Bastaram  algumas requisições feitas com o usuário A para ser necessário reiniciar  o servidor, pois o serviço havia ficado indisponível.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;No livro “How to Break Software”, James Whittaker demonstra falhas  que podem ser provocadas tanto pela interface com o usuário como através  de outro software. Ele ainda fala que muitos têm dificuldade em  entender o ambiente em que o software funciona. Na experiência que tive  com testes de software até o momento, me deparei com vários testadores  que somente interagiam com a porção de botões, ou outros componentes  visuais, que lhe eram oferecidos através de especificações. Tais  testadores desconsideravam sistema de arquivos, componentes externos,  sistema operacional, rede, relacionamento com outras funcionalidades,  etc.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Com esse post, pretendo incentivar uma briga.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Testadores&lt;/strong&gt;, aprendam onde os desenvolvedores deixam os bugs. Acreditem, &lt;strong&gt;boa parte das falhas de um software estão no código&lt;/strong&gt;!  Estudem formas diferentes de se encontrar os problemas. Entenda o  sistema operacional, analise o código fonte do software, entenda de  redes, estude as falhas dos frameworks utilizados, avaliem a segurança  do produto (não usem a desculpa de que segurança é um requisito  não-funcional), estudem tudo o que for válido para certificar a  qualidade do software.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Desenvolvedores&lt;/strong&gt;, vocês vão deixar? Vejam o que esses  testadores poderão fazer com o código produzido por vocês! Se aproximem  do pensamento dos testadores, vejam como eles agem. Desenvolvam o senso  crítico. Dêem seu máximo para que falhas comuns não aconteçam. &lt;strong&gt;Estudem onde os bugs aparecem para poder evitá-los&lt;/strong&gt;!&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;No final, essa disputa saudável, entre evitar e encontrar os bugs, é  uma forma de se obter um software de qualidade e uma equipe em evolução  contínua.&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-5030237615276402688?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/5030237615276402688/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2011/03/incentivando-uma-briga.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/5030237615276402688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/5030237615276402688'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2011/03/incentivando-uma-briga.html' title='Incentivando uma briga'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/_C02pXgBYFJI/TXgixj-CMDI/AAAAAAAAAa4/SjhaWO9aYMw/s72-c/menu_01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-6712616927757674763</id><published>2009-06-14T17:52:00.000-07:00</published><updated>2009-06-14T19:53:46.356-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia da informação'/><category scheme='http://www.blogger.com/atom/ns#' term='rock star'/><category scheme='http://www.blogger.com/atom/ns#' term='profissional'/><title type='text'>Profissional de TI*, um rock star diferente</title><content type='html'>&lt;div style="text-align: justify;"&gt;Começarei este post com uma simples pergunta: Sua companheira** fica tão feliz quanto você ao ver seu código milagroso para a solução de um problema?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;object width="400" height="320" class="BLOG_video_class" id="BLOG_video-c474e298d2ae4bb7" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v11.nonxt1.googlevideo.com/videoplayback?id%3Dc474e298d2ae4bb7%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331294658%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D65BD984EA64EA8139B3ADF4438B0D743C2130604.323E90EB00FAB63F7AC7F335B3BDC18BE8ADDB6A%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dc474e298d2ae4bb7%26offsetms%3D5000%26itag%3Dw160%26sigh%3DQomgT0k-yF0eFQtDeThxGS5is1M&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="400" height="320" bgcolor="#FFFFFF"flashvars="flvurl=http://v11.nonxt1.googlevideo.com/videoplayback?id%3Dc474e298d2ae4bb7%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331294658%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D65BD984EA64EA8139B3ADF4438B0D743C2130604.323E90EB00FAB63F7AC7F335B3BDC18BE8ADDB6A%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dc474e298d2ae4bb7%26offsetms%3D5000%26itag%3Dw160%26sigh%3DQomgT0k-yF0eFQtDeThxGS5is1M&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center; font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;"Gatinha, deixa eu te mostrar meu último código fonte!"&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;É fato, não somos &lt;span style="font-style: italic;"&gt;rock stars&lt;/span&gt;. Não fazemos um gol e dedicamos ao nosso filho em rede internacional. Não incorporamos o personagem de uma forma que transmita a emoção para o público. No máximo, iremos aparecer no jornal entre uma das várias reportagens do Kaká ou de mais um novo filme do Brad Pitt.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;- Mas, quem era aquele naquela entrevista que passou?&lt;br /&gt;- Era o co-inventor desse tal de USB.&lt;br /&gt;- Ah...&lt;br /&gt;[silêncio]&lt;br /&gt;- O Brad Pitt está mesmo um gato nesse novo filme, não é amiga?&lt;br /&gt;...&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;E o nome? Onde foi mencionado o nome de Ajay Bhatt? Será que ele é menos importante para a história da humanidade quanto Pelé, Ronaldinho, Elvis, etc? Fala-se de computador e o máximo que se escuta em nomes é Bill Gates. E acredite, muitas pessoas acham que não existe diferença entre linux e windows e não sabem o que é Microsoft.&lt;br /&gt;&lt;br /&gt;A ciência é feita para que outros cientistas nos admirem. Exibimo-nos para quem pode entender a complexidade do que fazemos. Sério, o computador não é criado de uma hora pra outra.&lt;br /&gt;&lt;br /&gt;Está cada vez mais difícil encontrar mulheres na nossa área. E as que entram normalmente se afastam da área técnica. Para quais mulheres seremos, então, o macho dominante***? Como iremos nos exibir para as fêmeas da região se elas não nos acham atraentes?&lt;br /&gt;&lt;br /&gt;E deixo mais perguntas. &lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Será que no momento em que nós, brasileiros, valorizarmos mais a ciência e a engenharia veremos mais os resultados de mentes criativas no nosso país?&lt;/span&gt;&lt;/span&gt; Ou eu vou matricular o meu filho na escolinha de futebol para que ele tenha um bom futuro por aqui?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;* TI: Tecnologia da Informação&lt;br /&gt;** Estou assumindo que você é mais um dos homens na área de TI.&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;*** Exemplo de machos dominantes: pessoas da área de direito ou medicina (para os que investem na mente), jogadores de futebol ou artistas (não faz diferença qual, basta aparecer na televisão e parecer bonitinho)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-6712616927757674763?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=c474e298d2ae4bb7&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/6712616927757674763/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2009/06/profissional-de-ti-um-rock-star.html#comment-form' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/6712616927757674763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/6712616927757674763'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2009/06/profissional-de-ti-um-rock-star.html' title='Profissional de TI*, um rock star diferente'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-2757439980393792348</id><published>2009-04-26T06:51:00.000-07:00</published><updated>2009-04-26T09:46:08.552-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sistemas Embarcados'/><title type='text'>Fim de semana</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C02pXgBYFJI/SfRucfZw7tI/AAAAAAAAAGw/Bf7W2a6aCVQ/s1600-h/manhadesol.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 151px;" src="http://4.bp.blogspot.com/_C02pXgBYFJI/SfRucfZw7tI/AAAAAAAAAGw/Bf7W2a6aCVQ/s400/manhadesol.jpg" alt="" id="BLOGGER_PHOTO_ID_5329005694831095506" border="0" /&gt;&lt;/a&gt;Manhã de sábado ensolarada, ideal para curtir uma praia. Acordo cedo (7 horas da manhã), me arrumo e por volta das 9 horas... Vou para casa de Henrique fazer trabalhos da faculdade. Primeira brincadeira, GRASP (trabalho de Engenharia de Software II) com Marcus e Antônio Carlos. Chegado o meio dia  e dada por encerrada a atividade voltada para GRASP para aquele&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C02pXgBYFJI/SfRxPjhOXEI/AAAAAAAAAHA/pTs-H_a_a5s/s1600-h/lpc2129.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 250px; height: 200px;" src="http://3.bp.blogspot.com/_C02pXgBYFJI/SfRxPjhOXEI/AAAAAAAAAHA/pTs-H_a_a5s/s400/lpc2129.jpg" alt="" id="BLOGGER_PHOTO_ID_5329008771132709954" border="0" /&gt;&lt;/a&gt; momento, pois ainda restam várias realizações para se fazer, inicia-se a jornada junto com a LPC2129 (plaquinha já com uma aplicação embarcada do nosso professor). Nesse caso o grupo está composto por Edson, Henrique e eu.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;começa agora...&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Sistemas Embarcados (o p&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;rojeto)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Primeiro dia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A aplicação poderia acender e apagar os LEDs de acordo com o botão que fosse pressionado. Em nosso poder estava, também o código desta aplicação. Foi ai, então que resolvemos tentar embarcar a mesma aplicação. Problema, como deveriamos configurar o Flash Magic e os jumpers da plaquinha para embarcar uma aplicação?&lt;br /&gt;&lt;br /&gt;Tentamos de várias formas: tira jumper, coloca jumper, haddoken pra trás no soco forte... nada. Mas, segundo o Flash Magic a aplicação havia sido embarcada, sendo que os LEDs não ligavam. Surgiu então a dúvida, será que a plaquinha &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C02pXgBYFJI/SfR3m5VpsXI/AAAAAAAAAHI/1RpEnRBOmqo/s1600-h/dead.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 267px; height: 200px;" src="http://3.bp.blogspot.com/_C02pXgBYFJI/SfR3m5VpsXI/AAAAAAAAAHI/1RpEnRBOmqo/s400/dead.jpg" alt="" id="BLOGGER_PHOTO_ID_5329015769196507506" border="0" /&gt;&lt;/a&gt;morreu? Fomos (meu grupo) buscar a outra plaquinha que estava com Antônio (um colega de outro grupo) pra tentar com ela.&lt;br /&gt;&lt;br /&gt;Conseguimos fazer, exatamente, a mesma coisa com a outra placa. Nada de LEDs acendendo. A hora foi se passando, entrou a noite e fui para casa levando comigo uma das placas para continuar tentando.&lt;br /&gt;&lt;br /&gt;Liguei para Bruno Cartaxo (membro do outro grupo) e peguei com ele as configurações exatas para o Flash Magic com a LPC2129. Para minha alegria, funcionou! Naquele momento era só festa, modificar o código do professor, colocar esse e não aquele LED para acender, agora apaga, agora acende, etc. Dá pra notar, fiquei feliz.&lt;br /&gt;&lt;br /&gt;Depois comecei a tentar desvendar a porta Ethernet, descobri a existência do uIP que resolvia esse problema e pude, então, escrever uma aplicação embarcada para acender e apagar os LEDs com um cliente Socket em Java para controlar cada um deles. Agora, resta conseguir embarcar um servidor WEB que permita controlar os LEDs a partir dele, já que o problema IP foi resolvido. Estou empolgado, pois o FreeRTOS parece atender a esta necessidade! Depois que os LEDs puderem ser acesos pelo servidor WEB o objetivo passará a ser acender uma lâmpada a partir dele.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C02pXgBYFJI/SfR8ZGTrseI/AAAAAAAAAHQ/SvdzkJbs_i4/s1600-h/ledc.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 311px;" src="http://2.bp.blogspot.com/_C02pXgBYFJI/SfR8ZGTrseI/AAAAAAAAAHQ/SvdzkJbs_i4/s400/ledc.jpg" alt="" id="BLOGGER_PHOTO_ID_5329021029717881314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-2757439980393792348?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/2757439980393792348/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2009/04/fim-de-semana.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/2757439980393792348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/2757439980393792348'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2009/04/fim-de-semana.html' title='Fim de semana'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_C02pXgBYFJI/SfRucfZw7tI/AAAAAAAAAGw/Bf7W2a6aCVQ/s72-c/manhadesol.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-241670374434041923</id><published>2008-11-09T15:22:00.000-08:00</published><updated>2008-12-11T13:32:01.128-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teste de software'/><category scheme='http://www.blogger.com/atom/ns#' term='TMM'/><category scheme='http://www.blogger.com/atom/ns#' term='sistemas críticos'/><title type='text'>Quem testa o botão vermelho?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C02pXgBYFJI/SRd4_0FyRpI/AAAAAAAAAEk/fiVWoZ9hTUo/s1600-h/botao_vermelho.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 150px;" src="http://3.bp.blogspot.com/_C02pXgBYFJI/SRd4_0FyRpI/AAAAAAAAAEk/fiVWoZ9hTUo/s320/botao_vermelho.jpg" alt="" id="BLOGGER_PHOTO_ID_5266811326943086226" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Para aqueles que possuem a atividade de teste de software o que vem a ser falado não é novidade. Sempre, acredite, o software vai apresentar problemas durante o desenvolvimento. Não duvidando da competência da equipe que o desenvolve, mas pelo fato de serem humanos, os desenvolvedores podem cometer erros. A pergunta do título é simples. Quem irá testar o botão vermelho (aquele que exige a operação mais complicada e/ou no caso de todas as outras darem errados)?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Fora este cenário ainda pode-se pensar em situações como sistemas cirúrgicos, de segurança, aéreos, militares, etc. Como é possível simular situações que não são esperadas. Como é possível provar que &lt;span style="font-weight: bold;"&gt;funciona&lt;/span&gt; um software que &lt;span style="font-weight: bold; font-style: italic;"&gt;não&lt;/span&gt; pode dar errado?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Fazendo uma analogia, imagine o que seria de Davi se a pedra não derrubasse o &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C02pXgBYFJI/SRd6-6c9bsI/AAAAAAAAAE0/VBQ2Tfxa56g/s1600-h/charge_davi_e_golias.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 209px;" src="http://2.bp.blogspot.com/_C02pXgBYFJI/SRd6-6c9bsI/AAAAAAAAAE0/VBQ2Tfxa56g/s320/charge_davi_e_golias.gif" alt="" id="BLOGGER_PHOTO_ID_5266813510494285506" border="0" /&gt;&lt;/a&gt;Golias. No mínimo ele ficaria machucado. Para executar o arremesso da pedra Davi deve ter calculado, estudado a posição do vento, condições de altura, movimento da atiradeira, peso da pedra, etc. &lt;span style="font-style: italic;"&gt;Será que realmente isto ocorreu?&lt;/span&gt; Independente se foi bem estudado ou não vale se pensar que, muito provavelmente, a ira de Golias seria bem maior após uma tentativa de o derrubarem. E representando esta analogia em tempos atuais (mas não tão atuais assim) pode-se imaginar que o esforço que tiveram pra se reerguer em Hiroshima poderia ser revertido para revidar o ataque caso a bomba caísse sem surtir o efeito que era previsto.&lt;br /&gt;&lt;br /&gt;Com o tempo passa-se a ficar um pouco neurótico. Será que o software do equipamento que será utilizado para auxiliar na realização de uma cirurgia em mim (um exemplo) foi testado adequadamente? E se faltar energia, o cirurgião poderá realizar todos os procedimentos manualmente para me manter vivo????&lt;br /&gt;&lt;br /&gt;Calma, segundo o &lt;a href="http://www.tmmifoundation.org/"&gt;TMM&lt;/a&gt; nível 5 o teste "&lt;span style="font-style: italic;"&gt;é um processo com o objetivo de prevenir defeitos&lt;/span&gt;" (o que dará assunto para um próximo &lt;span style="font-style: italic;"&gt;post&lt;/span&gt;). Basicamente, não será necessário testar (entenda-se por testes manuais) de fato o meu software. Poderá até ser realizado um ciclo de testes para "garantir" alguma coisa (que funciona, que não funciona, que atende os requisitos, etc) mas não será tão necessário já que todos os defeitos foram prevenidos.&lt;br /&gt;&lt;br /&gt;Mas a pergunta continua, você se colocaria de cobaia para um teste de erro de um sistema cirúrgico  ou daria uma martelada em uma bomba* para provar que uma tremulação durante o transporte não iria a fazer entrar em atividade?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C02pXgBYFJI/SReAQlwVgKI/AAAAAAAAAE8/GF1QyH0V-8U/s1600-h/quadrinhobum.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 432px; height: 150px;" src="http://1.bp.blogspot.com/_C02pXgBYFJI/SReAQlwVgKI/AAAAAAAAAE8/GF1QyH0V-8U/s400/quadrinhobum.jpg" alt="" id="BLOGGER_PHOTO_ID_5266819311734194338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;* Sei que uma bomba não é um software, é só um exemplo para mostrar um erro grave que pode ser cometido e envolve risco&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;Imagens (por ordem que aparecem):&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[1]&lt;/span&gt; http://2.bp.blogspot.com/_cLovCogpnbc/Rml6VgtIwxI/AAAAAAAAACQ/wpn0tgQ42VQ/s1600-h/bot%C3%83%C2%A3o+vermelho.jpg acessado em 09/11/2008&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[2]&lt;/span&gt; http://www.palavradaverdade.net/Humor/charge0420-20Davi20e20Golias.gif&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;&lt;span style="color: rgb(102, 102, 102);"&gt; acessado em 09/11/2008&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[3]&lt;/span&gt; Eu mesmo que fiz para o &lt;span style="font-style: italic;"&gt;post&lt;/span&gt;! ;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-241670374434041923?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/241670374434041923/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2008/11/quem-testa-o-boto-vermelho.html#comment-form' title='11 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/241670374434041923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/241670374434041923'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2008/11/quem-testa-o-boto-vermelho.html' title='Quem testa o botão vermelho?'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_C02pXgBYFJI/SRd4_0FyRpI/AAAAAAAAAEk/fiVWoZ9hTUo/s72-c/botao_vermelho.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-8104864162423472460</id><published>2008-10-05T18:34:00.000-07:00</published><updated>2008-10-05T20:09:07.499-07:00</updated><title type='text'>Ensinando o computador: Estruturas Condicionais</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C02pXgBYFJI/SOl_yYjbCoI/AAAAAAAAAEc/T77pccuZbPM/s1600-h/cartoon_anything_right.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_C02pXgBYFJI/SOl_yYjbCoI/AAAAAAAAAEc/T77pccuZbPM/s320/cartoon_anything_right.png" alt="" id="BLOGGER_PHOTO_ID_5253870943865604738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal; font-weight: bold; font-style: italic; color: rgb(102, 102, 102);font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;Para ajudar aqueles que estão iniciando na área de programação, uma pequena e breve explicação sobre estruturas condicionais simples e compostas (utilizando o comando SE).&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;Antes de tudo devemos perceber que o computador é, de certa forma, "cego". O que acontece é que o mesmo se comporta de acordo com o que &lt;i&gt;programadores&lt;/i&gt; dizem que deve ser feito em cada situação, reconhecendo um conjunto limitado de instruções.&lt;br /&gt;Para que este responda de acordo com as expectativas devem-se dar as instruções corretas. Sabe-se que os programas são executados de cima para baixo de forma sequencial. Mas em certos momentos será necessário modificar este curso de acordo com as decisões que devem ser tomadas. Isto poderá ser feito através de perguntas realizadas pelo comando &lt;span style="font-weight: bold;"&gt;SE&lt;/span&gt; (&lt;span style="font-style: italic;"&gt;em inglês &lt;span style="font-weight: bold;"&gt;IF&lt;/span&gt;&lt;/span&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;Existem três situações bem definidas dentro da programação, para o comando SE, que são: Estrutura Condicional Simples, Composta ou Encadeada.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Fluxograma&lt;/span&gt;&lt;br /&gt;Uma breve explicação sobre fluxograma para logo em seguida dar continuidade ao foco principal do &lt;span style="font-style: italic;"&gt;post&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;Fluxograma “&lt;span style="font-style: italic;"&gt;é um tipo de diagrama, e pode ser entendido como uma representação esquemática de um processo, muitas vezes feito através de gráficos que ilustram de forma descomplicada a transição de informações entre os elementos que o compõem. Podemos entendê-lo, na prática, como a documentação dos passos necessários para a execução de um processo qualquer. É uma das Sete Ferramentas da Qualidade. Muito utilizada em fábricas e indústrias para a organização de produtos e processos&lt;/span&gt;.” [&lt;/span&gt;&lt;xml&gt;&lt;w:worddocument&gt;&lt;w:view&gt;&lt;/w:view&gt;&lt;w:trackmoves&gt;&lt;w:trackformatting&gt;&lt;w:punctuationkerning&gt;&lt;w:validateagainstschemas&gt;&lt;w:donotpromoteqf&gt;&lt;w:compatibility&gt;&lt;w:breakwrappedtables&gt;&lt;w:snaptogridincell&gt;&lt;w:wraptextwithpunct&gt;&lt;w:useasianbreakrules&gt;&lt;w:dontgrowautofit&gt;&lt;w:splitpgbreakandparamark&gt;&lt;w:dontvertaligncellwithsp&gt;&lt;w:dontbreakconstrainedforcedtables&gt;&lt;w:dontvertalignintxbx&gt;&lt;w:word11kerningpairs&gt;  &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;&lt;!--[endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0cm;  margin-right:0cm;  margin-bottom:10.0pt;  margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;  mso-fareast-language:EN-US;} a:link, span.MsoHyperlink  {mso-style-priority:99;  color:blue;  mso-themecolor:hyperlink;  text-decoration:underline;  text-underline:single;} a:visited, span.MsoHyperlinkFollowed  {mso-style-noshow:yes;  mso-style-priority:99;  color:purple;  mso-themecolor:followedhyperlink;  text-decoration:underline;  text-underline:single;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;  mso-fareast-language:EN-US;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:612.0pt 792.0pt;  margin:70.85pt 3.0cm 70.85pt 3.0cm;  mso-header-margin:36.0pt;  mso-footer-margin:36.0pt;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Tabela normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="line-height: 115%;font-size:100%;" &gt;&lt;a href="http://pt.wikipedia.org/wiki/Fluxograma"&gt;Wikipedia&lt;/a&gt;, acessado em 5 de outubro de 2008&lt;/span&gt;&lt;span style="font-size:100%;"&gt;]&lt;/span&gt;&lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/m:brkbinsub&gt;&lt;/m:brkbin&gt;&lt;/m:mathfont&gt;&lt;/m:mathpr&gt;&lt;/w:word11kerningpairs&gt;&lt;/w:dontvertalignintxbx&gt;&lt;/w:dontbreakconstrainedforcedtables&gt;&lt;/w:dontvertaligncellwithsp&gt;&lt;/w:splitpgbreakandparamark&gt;&lt;/w:dontgrowautofit&gt;&lt;/w:useasianbreakrules&gt;&lt;/w:wraptextwithpunct&gt;&lt;/w:snaptogridincell&gt;&lt;/w:breakwrappedtables&gt;&lt;/w:compatibility&gt;&lt;/w:donotpromoteqf&gt;&lt;/w:validateagainstschemas&gt;&lt;/w:punctuationkerning&gt;&lt;/w:trackformatting&gt;&lt;/w:trackmoves&gt;&lt;/w:worddocument&gt;&lt;/xml&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal; font-family: times new roman;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C02pXgBYFJI/SOlynCg1txI/AAAAAAAAAEE/whG2recj8LU/s1600-h/fluxograma.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;a style="font-family: times new roman;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C02pXgBYFJI/SOly4nS6s9I/AAAAAAAAAEM/tmKGarYuEZg/s1600-h/fluxograma.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 393px; height: 52px;" src="http://4.bp.blogspot.com/_C02pXgBYFJI/SOly4nS6s9I/AAAAAAAAAEM/tmKGarYuEZg/s400/fluxograma.jpg" alt="" id="BLOGGER_PHOTO_ID_5253856757250962386" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Formas para representação do fluxograma&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;Como &lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;exemplo será utilizado o seguinte cenário: "Minha mãe me impôs uma condição para que eu pudesse andar de bicicleta. Para que eu pudesse pegar a bicicleta, antes eu deveria tomar banho". A partir do que foi especificado pode-se extrair o seguinte fluxograma:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: times new roman;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C02pXgBYFJI/SOl2VIs8C7I/AAAAAAAAAEU/Wv2k2keKL3M/s1600-h/tomarBanho.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_C02pXgBYFJI/SOl2VIs8C7I/AAAAAAAAAEU/Wv2k2keKL3M/s400/tomarBanho.jpg" alt="" id="BLOGGER_PHOTO_ID_5253860545789692850" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;Agora, indo ao que interessa, pode-se obter o seguinte algoritmo a partir do fluxograma apresentado:&lt;/span&gt;&lt;br /&gt;&lt;div  style="text-align: center;font-family:times new roman;"&gt;&lt;span style="font-weight: bold;"&gt;Estrutura Condicional SE (Simples&lt;/span&gt;)&lt;br /&gt;&lt;/div&gt; &lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;Algoritmo&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;DECLARE&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; tomeiBanho, &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;LÓGICO&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;ler&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; tomeiBanho;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Se&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);font-family:times new roman;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;(&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;tomeiBanho&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);font-family:times new roman;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;então&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(255, 255, 255);font-family:times new roman;" &gt;----&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:times new roman;" &gt;(andar de bicicleta, oba!)&lt;/span&gt;&lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Fim-Se&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;Fim-Algoritmo&lt;/span&gt;&lt;br /&gt;&lt;div  style="text-align: center;font-family:times new roman;"&gt;&lt;span style="font-weight: bold;"&gt;Estrutura Condicional SE (Composta&lt;/span&gt;)&lt;br /&gt;Repare que agora possui o comando &lt;span style="font-weight: bold;"&gt;senão&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;Algoritmo&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;DECLARE&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; tomeiBanho, &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;LÓGICO&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;ler&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; tomeiBanho;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Se&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);font-family:times new roman;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;(&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;tomeiBanho&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);font-family:times new roman;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:times new roman;" &gt;então&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(255, 255, 255);font-family:times new roman;" &gt;----&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:times new roman;" &gt;(andar de bicicleta, oba!)&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;senão&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;                &lt;span style="color: rgb(255, 255, 255);font-family:times new roman;" &gt;----&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:times new roman;" &gt;(ficar triste, pois mamãe não deixa andar de bicicleta sem tomar banho)&lt;/span&gt;&lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Fim-Se&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;&lt;span style="font-family:times new roman;"&gt;Fim-Algoritmo&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-8104864162423472460?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/8104864162423472460/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2008/10/ensinando-o-computador-estruturas.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/8104864162423472460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/8104864162423472460'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2008/10/ensinando-o-computador-estruturas.html' title='Ensinando o computador: Estruturas Condicionais'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_C02pXgBYFJI/SOl_yYjbCoI/AAAAAAAAAEc/T77pccuZbPM/s72-c/cartoon_anything_right.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-4263385184419476816</id><published>2008-08-24T19:42:00.000-07:00</published><updated>2010-02-23T11:05:18.766-08:00</updated><title type='text'>Lógica de programação: a primeira vista</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C02pXgBYFJI/SLIctxZq4JI/AAAAAAAAAC8/X1t4qTxc0ko/s320/canetaEgaveta.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 242px; height: 320px;" src="http://2.bp.blogspot.com/_C02pXgBYFJI/SLIctxZq4JI/AAAAAAAAAC8/X1t4qTxc0ko/s320/canetaEgaveta.jpg" border="0" alt="" /&gt;&lt;/a&gt;Era dezembro de 2004, quando fui para a primeira aula de lógica de programação no ITECI. Um pouco atrasado chego ao local e, sem sequer me ser questionado o nome, sou colocado em uma sala por uma das atendentes do local. A aula já havia iniciado e tinham muitas pessoas na sala. O instrutor exibe um slide com a seguinte frase: "A caneta está na gaveta, para pegar a caneta preciso abrir a gaveta". Claro! É óbvio que para pegar uma caneta que está dentro da gaveta eu preciso antes abrir a gaveta.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Olhei para os lados me questionando: "Será que alguém daqui não sabe abrir uma gaveta e tirar a caneta?". Estaria eu em uma sala para pessoas, digamos assim, "especiais". Todos pareciam normais a minha volta (apesar de serem da área de TI).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C02pXgBYFJI/SLIctzwqmKI/AAAAAAAAADE/XcHgPxapUhE/s320/fluxograma.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 234px; height: 320px;" src="http://2.bp.blogspot.com/_C02pXgBYFJI/SLIctzwqmKI/AAAAAAAAADE/XcHgPxapUhE/s320/fluxograma.jpg" border="0" alt="" /&gt;&lt;/a&gt;Chega o intervalo, resolvo perguntar ao instrutor se eu estava, realmente, na sala de lógica de programação. Para minha surpresa... Estava! Começamos a ver outros procedimentos simples do cotidiano e eu ainda a me perguntar se valeria a pena um curso daquele. Era claro que eu sabia tirar caneta de gaveta, abrir geladeira, fazer uma ligação de orelhão para um amigo.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Chega a hora de fazermos fluxogramas...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;"Faça uma ligação para um amigo pelo orelhão", era o que dizia o exercício para fazermos em um fluxograma. Isso eu sei... Pega cartão... Liga pra o amigo... se não atender, liga de novo... atendeu, falou, "tchau"! Entrego o fluxograma feliz da vida. Acabei antes de todo mundo... [ÊÊÊÊ!!!]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;O instrutor pergunta: "Se eu não tiver cartão?". Volto... Nem sento na cadeira e coloco um outro bloquinho daqueles que representa uma condição... setinha pra lá... setinha pra cá... Pronto! Está aqui meu fluxograma "completão"! E ele pergunta: "E se o orelhão estiver quebrado?".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C02pXgBYFJI/SLIcuFx_pTI/AAAAAAAAADM/Rsmjei6IdLY/s320/fluxogramas.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 293px;" src="http://4.bp.blogspot.com/_C02pXgBYFJI/SLIcuFx_pTI/AAAAAAAAADM/Rsmjei6IdLY/s320/fluxogramas.jpg" border="0" alt="" /&gt;&lt;/a&gt;Para resumir a história, passei a noite inteira fazendo um fluxograma que não cabia em várias folhas juntas de papel paltado. E no final acabei percebendo que tirar uma caneta da gaveta não é um procedimento tão simples. Precisamos dizer para a máquina o que ela vai fazer em cada situação. Somos nós quem damos a inteligência que ela possui.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Eu possuia uma visão leiga de que para fazer um software era apenas questão de desenhar uma tela e dizer "Alakazam!" para que tudo estivesse resolvido. Vi que não é tão fácil como muitos imaginam. Já mais a frente no curso, depois de passar duas semanas virando noites e reunindo-se na casa dos colegas de grupo, apresento o projeto (feito em Java com Swing, todo na mão, tinha até DesktopPane no meio, que tirei nota máxima) para minha mãe e ela fala: "Tu passou duas semanas dormindo mal pra fazer essa coisa?". Mas quer saber? Valeu, muito, a pena.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Cenários a se pensar para construir? Existem muitos... Para quebrar... Mais ainda!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para deixar claro... Não consegui fazer a ligação de orelhão sem que o intrutor quebrasse em algum lugar, que sorrindo me disse: "Está bom por este, vamos para um próximo exercício!".&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-4263385184419476816?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/4263385184419476816/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2008/08/lgica-de-programao-primeira-vista.html#comment-form' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/4263385184419476816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/4263385184419476816'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2008/08/lgica-de-programao-primeira-vista.html' title='Lógica de programação: a primeira vista'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_C02pXgBYFJI/SLIctxZq4JI/AAAAAAAAAC8/X1t4qTxc0ko/s72-c/canetaEgaveta.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9186903533526894057.post-5511890226349267762</id><published>2008-08-10T18:05:00.000-07:00</published><updated>2008-08-10T18:50:53.356-07:00</updated><title type='text'>Motivação</title><content type='html'>&lt;div style="text-align: justify;"&gt;"&lt;span style="font-weight: bold; font-style: italic;"&gt;Motivação&lt;/span&gt;", este foi o tema do primeiro texto que tive a oportunidade de ler do professor &lt;a href="http://profdouglas.blogspot.com/"&gt;Douglas Daniel Del Frari&lt;/a&gt;. Grato, sou, a Deus por poder trabalhar no mesmo ambiente que esta pessoa, onde posso trocar idéias nas horas de almoço. O que mais me admira neste profissional é o empenho para passar, não somente para seus alunos mas, para a comunidade o seu conhecimento, o que ele acredita ser importante e valioso para a área de tecnologia da informação. Não é fácil encontrar professores que se importem tanto com os alunos a ponto de ajustar a própria aula para que todos possam tirar proveito do conteúdo. Espero um dia ter o privilégio de estar em alguma aula ministrada por ele.&lt;br /&gt;&lt;br /&gt;A motivação para se criar o blog já existia, mas foi a partir do post de &lt;a href="http://profdouglas.blogspot.com/2008/08/mercado-de-trabalho-como-se-preparar.html"&gt;como se preparar para o mercado de trabalho&lt;/a&gt; que foi dada a partida. Espero demonstrar aqui coisas que considero importantes para atuar na área. E tentar, até mesmo, me manter atualizado quanto a tendências do mercado.&lt;br /&gt;&lt;br /&gt;Assumi este casamento com o desenvolvimento de software a algum tempo com a ajuda e apoio do meu pai, outro profissional da área que admiro bastante (profissionalmente e pessoalmente).   Esse amor que adquiri por desenvolver é o que me faz ficar feliz durante e após as noites de sono que não tenho por estar estudando ou fazendo projetos. Esse amor é a minha motivação. Tomando uso das palavras de um poeta, que seja eterno enquanto dure. Que venham mais linhas de códigos que tragam vontade de pôr molduras e pendurar na sala de casa. E venham mais noites não dormidas que gerem bons resultados.&lt;br /&gt;&lt;br /&gt;Falando um pouco mais do meu pai. O que seria de mim se não fosse por ele? Foi ele quem me disse: "Se você pretende mesmo fazer ciências da computação este curso é interessante". O curso ao qual ele se referia era o de programador trainee (que eu havia pego o folder). O preço pago por se antecipar, alguns períodos chatos na faculdade em que eu pensava que poderia estar em outros lugares aprendendo alguma coisa. Mas de tudo deu pra se tirar algum aprendizado. Voltando ao meu pai, não teria dia melhor para dizer o quanto ele é importante. Feliz dia dos pais, "painho", apesar de estar, quase, no final do dia! Obrigado por tudo!&lt;br /&gt;&lt;br /&gt;Para deixar claro os meus agradecimentos, obrigado Deus, "painho", "mainha", minha irmã, e a todos aqueles que me dão, de alguma forma, motivação para continuar a enfrentar meus desafios. Do mundo, sabemos que, não levaremos nada. Então espero plantar, quem sabe aqui, bons frutos para aqueles que nele, irão, passar.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9186903533526894057-5511890226349267762?l=edwincarlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwincarlo.blogspot.com/feeds/5511890226349267762/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://edwincarlo.blogspot.com/2008/08/motivao.html#comment-form' title='9 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/5511890226349267762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9186903533526894057/posts/default/5511890226349267762'/><link rel='alternate' type='text/html' href='http://edwincarlo.blogspot.com/2008/08/motivao.html' title='Motivação'/><author><name>Edwin Carlo Ribeiro Marinho</name><uri>http://www.blogger.com/profile/14375419672419475736</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-WXrRJy0Tjq4/TcrABaLoMkI/AAAAAAAAAb4/csFA3ODJ6f8/s220/edwin.png'/></author><thr:total>9</thr:total></entry></feed>
