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

<channel>
	<title>Profissionais TI - Pra quem respira informação &#187; Desenvolvimento</title>
	<atom:link href="http://www.profissionaisti.com.br/category/desenvolvimento/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.profissionaisti.com.br</link>
	<description>Pra quem respira informação</description>
	<lastBuildDate>Sun, 12 Feb 2012 12:27:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Instalação do Oracle 11GR2 Express Edition + SQL Developer 3.0</title>
		<link>http://www.profissionaisti.com.br/2012/02/instalacao-do-oracle-11gr2-express-edition-sql-developer-3-0/</link>
		<comments>http://www.profissionaisti.com.br/2012/02/instalacao-do-oracle-11gr2-express-edition-sql-developer-3-0/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 11:06:25 +0000</pubDate>
		<dc:creator>Fábio Prado</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Developer]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20825</guid>
		<description><![CDATA[Olá pessoal, Na postagem de hoje não vou publicar um artigo, farei algo diferente, vou compartilhar um vídeo em que eu demonstro a instalação do Oracle Database 11GR2 Express Edition + instalação do SQL Developer 3.0, em um Sistema Operacional Windows. Além da instalação, no vídeo faço vários comentários sobre as vantagens e desvantagens da [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Olá pessoal,</p>
<p style="text-align: justify;">Na postagem de hoje não vou publicar um artigo, farei algo diferente, vou compartilhar um vídeo em que eu demonstro a instalação do <em>Oracle Database 11GR2 Express Edition</em> + instalação do <em>SQL Developer 3.0, </em>em um Sistema Operacional Windows. Além da instalação, no vídeo faço vários comentários sobre as vantagens e desvantagens da versão <em>Express </em>do Oracle Database e sobre características do <em>SQL Developer </em>e mostro no final, como se conectar no Banco de Dados utilizando o SQL Developer.</p>
<div style="text-align: justify;">
<p>O vídeo está no Youtube, dividido em 2 partes (por causa de limitações do Youtube, que permitem postar vídeos com tempo somente de até 15 minutos):</p>
<p style="text-align: center;"><iframe frameborder="0" height="395" src="http://www.youtube.com/embed/ql6ovb16tyQ" width="480"></iframe></p>
<p style="text-align: center;"><iframe frameborder="0" height="395" src="http://www.youtube.com/embed/yqjEmAy-Yrc" width="480"></iframe></p>
<p>[]s</p>
<p>Fábio Prado<br />
Fonte: <a href="http://www.fabioprado.net/2012/01/instalacao-do-oracle-11gr2-express.html" target="_blank">http://www.fabioprado.net/2012/01/instalacao-do-oracle-11gr2-express.html</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/02/instalacao-do-oracle-11gr2-express-edition-sql-developer-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Curso DADP &#8211; Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões (Online e Gratuito)</title>
		<link>http://www.profissionaisti.com.br/2012/01/curso-dadp-desenvolvimento-de-aplicativos-desktop-em-java-utilizando-padroes-online-e-gratuito/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/curso-dadp-desenvolvimento-de-aplicativos-desktop-em-java-utilizando-padroes-online-e-gratuito/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 20:46:31 +0000</pubDate>
		<dc:creator>Profissionais TI</dc:creator>
				<category><![CDATA[Curso Gratuito]]></category>
		<category><![CDATA[Desenvolvimento]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20859</guid>
		<description><![CDATA[O DADP é um curso autoinstrucional, livre e de qualificação, realizado totalmente a distância, que tem entre seus objetivos a capacitação dos participantes para o projeto e desenvolvimento de aplicativos CRUDs em Java aplicando padrões de projeto. O curso tem como objetivo capacitar estudantes e profissionais de TI para: Projetarem aplicativos desktop estruturados em camadas; Utilizarem padrões de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">O <strong>DADP</strong> é um curso autoinstrucional, livre e de qualificação, realizado totalmente a distância, que tem entre seus objetivos a capacitação dos participantes para o projeto e desenvolvimento de aplicativos CRUDs em Java aplicando padrões de projeto.</p>
<p style="text-align: justify;">O curso tem como objetivo capacitar estudantes e profissionais de TI para:</p>
<ul style="text-align: justify;">
<li>Projetarem aplicativos desktop estruturados em camadas;</li>
<li>Utilizarem padrões de projeto no desenho de aplicativos CRUDs;</li>
<li>Implementarem aplicativos usando a linguagem Java, a IDE NetBeans e bancos de dados relacionais</li>
</ul>
<p style="text-align: justify;">Este curso é oferecido gratuitamente. Do participante não é cobrada nenhuma quantia pelos materiais didáticos, nem pelo suporte dado pelo professor nos fóruns do curso. Entretanto, daqueles que quiserem receber ao final do curso o código-fonte do aplicativo-exemplo é solicitada a contribuição simbólica de R$ 20,00 (vinte reais) e, dos que desejarem certificado de participação, a quantia de R$ 30,00 (trinta reais) para cobrir as despesas com a confecção e envio pelos Correios.</p>
<p style="text-align: justify;">O curso está previsto para ocorrer de 02/04/2012 a 04/05/2012.</p>
<p style="text-align: justify;">Para descrição completa, FAQ, depoimentos e inscrição, acesse <a href="http://www.antoniopassos.com.br/index.php/menu-cursos/dadp" target="_blank">http://www.antoniopassos.com.br/index.php/menu-cursos/dadp</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/curso-dadp-desenvolvimento-de-aplicativos-desktop-em-java-utilizando-padroes-online-e-gratuito/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qual é o melhor Banco de Dados: ORACLE ou SQL SERVER?</title>
		<link>http://www.profissionaisti.com.br/2012/01/qual-e-o-melhor-banco-de-dados-oracle-ou-sql-server/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/qual-e-o-melhor-banco-de-dados-oracle-ou-sql-server/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 11:17:20 +0000</pubDate>
		<dc:creator>Fábio Prado</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Mercado]]></category>
		<category><![CDATA[Opinião]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20827</guid>
		<description><![CDATA[Olá pessoal, Estou escrevendo este artigo para fazer um comparativo e comentar sobre algumas vantagens e recursos dos 2 bancos de dados (BDs) mais utilizados nas grandes empresas do Brasil: Oracle e SQL Server, conforme pesquisa realizada em 2005 pelo Grupo Impacta (ver Figura 1). Embora a pesquisa de 2005 não seja tão recente, ela [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Olá pessoal,</p>
<p style="text-align: justify;">Estou escrevendo este artigo para fazer um comparativo e comentar sobre algumas vantagens e recursos dos 2 bancos de dados (BDs) mais utilizados nas grandes empresas do Brasil: <strong>Oracle</strong> e <strong>SQL Server</strong>, conforme pesquisa realizada em 2005 pelo <em>Grupo Impacta</em> (ver Figura 1). Embora a pesquisa de 2005 não seja tão recente, ela foi a mais confiável e concisa que eu encontrei para demonstrar a <em>nossa realidade</em> (o que temos nas empresas brasileiras).</p>
<p style="text-align: center;"><a href="http://1.bp.blogspot.com/-EOdAradIrlU/TvzHGjDLSCI/AAAAAAAAASs/I8K5BN2yqx0/s1600/bds_mais_utlilizados_mundo.jpg"><img src="http://1.bp.blogspot.com/-EOdAradIrlU/TvzHGjDLSCI/AAAAAAAAASs/I8K5BN2yqx0/s400/bds_mais_utlilizados_mundo.jpg" alt="" width="400" height="272" border="0" /></a><br />
Figura 1 &#8211; BDs mais utilizados nas grandes empresas brasileiras (Grupo Impacta 2005)</p>
<p style="text-align: justify;">Conheço os 2 BDs que vou comentar neste artigo, porém conheço muito melhor o BD <a href="http://www.profissionaisti.com.br/tag/oracle">Oracle</a>, por isso gostaria que os profissionais que estiverem lendo este artigo, deixem comentários que possam acrescentar mais detalhes sobre o SQL Server e recursos que existem nele e que não tenham itens correspondentes no Oracle.</p>
<p style="text-align: justify;">Seguem abaixo as principais características de cada BD:</p>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">SQL Server</span></strong>:</p>
<p style="text-align: justify;">- SGBD comercializado atualmente pela Microsoft. Nasceu em 1988, a partir de uma parceria entre <a href="http://www.profissionaisti.com.br/category/microsoft/">Microsoft</a>, Sybase e Aston-Tate;</p>
<p style="text-align: justify;">- Última versão: SQL Server 2008;</p>
<p style="text-align: justify;">- Custo de uma licença da versão Enterprise por CPU: aprox. U$ 28.000 por CPU;</p>
<p style="text-align: justify;">- Pode ser instalado somente em SO Windows;</p>
<p style="text-align: justify;">- Possui ferramentas de administração com interface gráfica excelentes, que possibilitam um gerenciamento mais fácil e produtivo. Ex.: SQL Server Management Studio 2008;</p>
<p style="text-align: justify;">- Como toda ferramenta Microsoft, o BD SQL Server em geral, é mais fácil de administrar e de programar do que em Oracle.</p>
<p style="text-align: justify;">- 2 recursos que acho bastante interessantes em SQL Server e que não existem correspondência no Oracle, são:</p>
<p style="text-align: justify;">a) Divisão lógica de uma instância contendo vários BDs. No Oracle temos apenas vários <em>schemas. </em>O SQL Server possui uma camada extra onde cada BD pode conter vários usuários ou schemas. Desse modo, podemos organizar e gerenciar melhor schemas correlacionados, pertencentes a uma mesma aplicação, em um BD isolado dos demais schemas do BD;</p>
<p style="text-align: justify;">b)  Possui um schema do sistema chamado MODEL que serve como template para schemas de usuários. Se por exemplo, o schema MODEL tiver 2 tabelas e uma visão, ao criar um novo schema de usuário, ele será criado com estes mesmos objetos.</p>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">Oracle</span></strong>:</p>
<p style="text-align: justify;">-  SGBD comercializado atualmente pela Oracle, que nasceu em 1979 e que foi o primeiro BD relacional comercializado no mundo;</p>
<p style="text-align: justify;">- Última versão: Oracle Database 11G;</p>
<p style="text-align: justify;">- Custo de uma licença da versão Enterprise por CPU: U$ 47.500 (até 2 core);</p>
<p style="text-align: justify;">- Pode ser instalado em múltiplas plataformas desde 1985. Entre as principais, podemos citar: Unix, Linux, HP/UX, BIM AIX, IBM VMS e Windows;</p>
<p style="text-align: justify;">- Possui ferramentas de administração com interface gráfica menos amigáveis que as do SQL Server. Isso vem mudando e melhorando a cada nova versão do Oracle. No 10G, o <em>Enterprise Manager</em> possui muitos recursos e sua interface gráfica evoluiu muito, mas ainda acho que as ferramentas da Microsoft são mais intuitivas e mais produtivas. No Oracle o DBA costuma gerenciar muitas atividades do BD através de conjuntos de scripts;</p>
<p style="text-align: justify;">- Possui uma documentação muito bem detalhada, o que de início até assusta, mas permite que você conheça muito bem o BD e todos os seus recursos;</p>
<p style="text-align: justify;">- Possui mais recursos de segurança e performance que o SQL Server. Exemplos:</p>
<p style="text-align: justify;">a) Por padrão, o Oracle não <em>commita</em> transações. Isso permite que você desfaça as alterações de uma instrução SQL, caso ela tenha sido submetido erroneamente. No SQL, por padrão as intruções SQL são auto-commitadas, o que facilita o trabalho geral dos desenvolvedores, mas que dificulta o trabalho de recuperação por danos acidentais e o controle transacional;</p>
<p style="text-align: justify;">b) Por padrão, o Oracle permite efetuar <strong>leitura consistente de dados</strong>. Esse recurso permite que um usuário &#8220;B&#8221; leia os dados de uma linha de uma tabela, no mesmo momento em que ela está sendo alterada por um usuário &#8220;A&#8221;, sem que o usuário &#8220;B&#8221; visualize os dados que estão sendo alterados pelo &#8220;A&#8221;. Não há bloqueio de leitura nem risco do usuário &#8220;B&#8221; visualizar os dados que ainda não foram commitados pelo usuário &#8220;A&#8221;. No SQL Server esse não é o comportamento padrão do BD, portanto, desenvolvedores inexperientes poderão desenvolver aplicações com sérios problemas de performance no acesso concorrente, se não tiverem os conhecimentos necessários para contornar bloqueios de leitura aos dados;</p>
<p style="text-align: justify;">c) Arquitetura mais flexível e com mais recursos para otimização de performance. No Oracle é possível criar e gerenciar diversas estruturas de memória no BD. É possível, por exemplo, definir estruturas de armazenamento com tamanhos de blocos que podem variar de 2k à 32k. No SQL Server só é possível criar estruturas de armazenamento de 8k. Em Oracle, sistemas OLAP e índices em geral, são otimizados com tamanhos de blocos maiores (32k);</p>
<p style="text-align: justify;">d) Possui <strong>Packages</strong>, que são objetos que permitem (entre diversos outros benefícios) agrupar e encapsular código de stored procedures e funções;</p>
<p style="text-align: justify;">e) Possui <strong>Sequences </strong>(que já li em alguns blogs que será implementado no SQL Server 2012). Sequences possuem muito mais recursos do que colunas de auto-incremento, existentes em SQL Server, para definir valores de chaves-primárias. Um exemplo que posso citar é o <em>cache</em> de Sequences, que permite otimizar a performance de inserções que necessitam de um valor único para compor a chave-primária (ver artigo <a href="http://www.fabioprado.net/2010/09/cache-em-oracle-sequences.html" target="_blank">http://www.fabioprado.net/2010/09/cache-em-oracle-sequences.html</a>;</p>
<p style="text-align: justify;">f) O <a href="http://www.profissionaisti.com.br/tag/oracle/">Oracle</a> possui mais tipos de índices que o SQL Server. Índices permitem otimizar consultas em BD. 2 exemplos que vou citar no Oracle que não existem itens correspondentes no SQL Server são: índices <span style="color: #274e13;"><strong>BITMAP</strong></span> (que permitem otimizar consultas em colunas com baixa cardinalidade) e índices <span style="color: #274e13;"><strong>Baseados em função</strong> </span>(que permitem indexar funções em colunas);</p>
<p style="text-align: justify;">g) Permite criar um ou mais processos chamados <strong>listeners, </strong>que são utilizados para conectar clientes remotos ao BD. Uma das vantagens de ter este tipo de processo é que a conexão ao BD pode ser distribuída entre diversos listeners, ou seja, podemos configurar múltiplos <em>listeners</em> para grupos menores de usuários, para <em>ouvir</em> em portas diferentes, com o objetivo de evitar gargalos de conexão ao BD quando temos muitos usuários (normalmente mais de 200 conexões por segundo) se conectando ao mesmo tempo;</p>
<p style="text-align: justify;">h) O Oracle possui um modelo de controle de acesso concorrente chamado <em>multiversion read consistency</em> (<em>MVRC</em>) que é um dos melhores modelos do mercado para permitir um controle de acesso concorrente com menor contenção de linhas e consequentemente, melhor performance quando há acesso concorrente aos dados. No Oracle o controle de bloqueios é realizado através da gravação de indicadores de bloqueio no nível das linhas, já no SQL Server existe um componente chamado <em>Lock Manager</em> para fazer o mesmo trabalho. No Lock Manager há uma sobrecarga maior para gerenciar uma grande qtde. de bloqueios, que consequentemente pode degradar a performance de atualizações e acessos concorrentes.</p>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">CONCLUSÃO</span></strong>:</p>
<p style="text-align: justify;">A percepção que eu tenho é que a <a href="http://www.profissionaisti.com.br/category/microsoft/">Microsoft</a> tem um histórico de manter o foco na entrega de produtos mais fáceis de se utilizar e de gerenciar. A Oracle, por sua vez, tem foco na entrega de produtos com mais segurança e com vasta gama de recursos.</p>
<p style="text-align: justify;">Ambos são ótimos BDs e cada um tem suas vantagens e desvantagens. <span style="color: #274e13;"><strong>O SQL Server tem a principal vantagem de ter um custo menor</strong></span>, aproximadamente metade do preço de um Oracle. no SQL Server existem algumas funcionalidades (Ex.: Particionamento de tabelas) que também existem no Oracle, mas que no SQL Server não precisa de licença adicional, enquanto que, no Oracle, é necessário adquirir licenças adicionais (Options), o que torna o produto Oracle mais caro ainda. <span style="color: #274e13;"><strong>Outra vantagem do SQL Server é a facilidade de uso e gerenciamento. </strong></span><span style="color: #000000;">Eu, particularmente, quando comecei a trabalhar com Oracle, achava tudo muito difícil. As ferramentas do SQL Server eram mais produtivas e mais intuitivas.</span></p>
<p style="text-align: justify;"><span><strong>O Oracle</strong></span> tem um custo mais alto que o SQL Server e é mais difícil de administrar, porém é um produto que <strong><span style="color: #274e13;">possui mais recursos de segurança e performance</span></strong>, que podem ser muito importantes e cruciais para empresas que possuem aplicações críticas e que possuem muitos dados e muitos usuários concorrentes, em geral.</p>
<p style="text-align: justify;">Para finalizar, vou responder agora a questão que é o título deste artigo: <strong><span style="color: #ff0000;"><span style="color: #274e13;">Qual é o melhor BD: Oracle ou SQL Server?</span> </span></strong></p>
<p style="text-align: justify;"><span style="color: #ff0000;"><strong>R.: Bom&#8230; isso depende da necessidade! </strong></span><span style="color: #000000;"> De um modo geral, acredito que o SQL Server é mais indicado para pequenas e médias empresas ou pequenas e médias aplicações, devido ao custo menor desse BD e porque normalmente as aplicações que são executadas nestes ambientes possuem menor quantidade e complexidade de requisitos. O Oracle, por sua vez, é mais indicado para grandes empresas ou grandes aplicações, que possuem requisitos de negócios mais complexos e críticos, e que possuem <em>grana</em> para pagar pelos recursos de segurança e performance adicionais que este BD oferece.</span></p>
<p style="text-align: justify;">Por hoje é só! Deixem seus comentários!</p>
<p style="text-align: justify;">Referências:</p>
<ul style="text-align: justify;">
<li><a href="http://www.linhadecodigo.com.br/artigo/2412/An%C3%83%C2%A1lise-de-desempenho-entre-os-bancos-de-dados-SQL-Sever-x-Oracle.aspx" target="_blank">http://www.linhadecodigo.com.br/artigo/2412/AnÃ¡lise-de-desempenho-entre-os-bancos-de-dados-SQL-Sever-x-Oracle.aspx</a></li>
<li><a href="http://www.dba-oracle.com/t_sql_server_vs_oracle_terminology.htm" target="_blank">http://www.dba-oracle.com/t_sql_server_vs_oracle_terminology.htm</a></li>
<li><a href="http://stackoverflow.com/questions/2322260/basic-differences-between-oracle-and-sql-server">http://stackoverflow.com/questions/2322260/basic-differences-between-oracle-and-sql-server</a></li>
<li><a href="http://pt.wikipedia.org/wiki/Oracle_%28banco_de_dados">http://pt.wikipedia.org/wiki/Oracle_(banco_de_dados</a>)</li>
<li><a href="http://msdn.microsoft.com/pt-br/library/ms175049.aspx">http://msdn.microsoft.com/pt-br/library/ms175049.aspx</a></li>
<li><a href="http://en.wikipedia.org/wiki/Microsoft_SQL_Server">http://en.wikipedia.org/wiki/Microsoft_SQL_Server</a></li>
</ul>
<p style="text-align: justify;">[]s</p>
<p style="text-align: justify;">Fonte: <a href="http://www.fabioprado.net/2012/01/qual-e-o-melhor-banco-de-dados-oracle.html">http://www.fabioprado.net/2012/01/qual-e-o-melhor-banco-de-dados-oracle.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/qual-e-o-melhor-banco-de-dados-oracle-ou-sql-server/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Alguns dos mais famosos erros de softwares da história</title>
		<link>http://www.profissionaisti.com.br/2012/01/alguns-dos-mais-famosos-erros-de-softwares-da-historia/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/alguns-dos-mais-famosos-erros-de-softwares-da-historia/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 11:40:40 +0000</pubDate>
		<dc:creator>gabiifonseca</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[História]]></category>
		<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[TI]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20705</guid>
		<description><![CDATA[Erros de software custam, só para a  economia dos EUA, cerca de  60 milhões dólares anualmente em retrabalho, perda de produtividade e danos reais. Todos nós sabemos o quanto erros nos programas podem ser irritantes, mas certas falhas de software também podem  ser caras, embaraçosas, destrutivas e mortais. Confira os famosos &#8220;desastres&#8221; que aconteceram no [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Erros de software custam, só para a  economia dos EUA, cerca de  60 milhões dólares anualmente em retrabalho, perda de produtividade e danos reais. Todos nós sabemos o quanto erros nos programas podem ser irritantes, mas certas falhas de software também podem  ser caras, embaraçosas, destrutivas e mortais. Confira os famosos &#8220;desastres&#8221; que aconteceram no mundo do <a href="http://www.profissionaisti.com.br/tag/software">software </a>nos últimos anos,  em ordem cronológica:</p>
<h3>1. Problemas no Mariner (1962)</h3>
<p><strong>Custo:</strong> 18,5 milhões dólares</p>
<p><strong>Desastre:</strong> Mariner, um foguete com uma sonda espacial para Vênus, foi desviado de seu percurso de voo logo após o lançamento. O controle da missão destruiu o foguete 293 segundos após a decolagem.</p>
<p><strong>Causa:</strong> Um programador, ao passar para o computador uma fórmula que haviam lhe entregado escrita manualmente, se esqueceu de uma barra. Sem ela, o software tratava variações normais de velocidade como se fossem sérios problemas, causando falhas por tentativas de correções que acabaram por enviar o foguete fora do curso.</p>
<h3 style="text-align: justify;">2. Hartford Coliseu Desmorona (1978)</h3>
<p><strong>Custo:</strong> 70 milhões de dólares, além de outros danos de 20 milhões para a economia local</p>
<p><strong>Desastre:</strong> Poucas horas depois de milhares de fãs deixarem o Coliseu Hartford, o teto de treliça de aço desabou sob o peso da neve molhada.</p>
<p><strong>Causa:</strong> O programador do software CAD, utilizado para projetar o coliseu, incorretamente assumiu que o suporte do telhado de aço enfrentaria apenas compressão natural. Mas quando um dos suportes inesperadamente recebeu um bloco de neve, este desencadeou uma reação em cadeia que derrubou o telhado de outras seções como dominós.</p>
<h3>3.  CIA distribue gás aos soviéticos (1982)</h3>
<p id="in_post_ad_middle_1" style="text-align: justify;"><ins></ins><ins id="aswift_2_anchor"></ins><strong>Custo:</strong> Milhões de dólares e danos significativos a economia soviética</p>
<p style="text-align: justify;"><strong>Desastre:</strong> O software de controle se descontrolou e produziu uma intensa pressão no gasoduto Trans-Siberian, resultando na maior explosão não-nuclear da história.</p>
<p style="text-align: justify;"><strong>Causa:</strong> CIA operatives allegedly planted a bug in a Canadian computer system purchased by the Soviets to control their gas pipelines.  The purchase was part of a strategic Soviet plan to steal or covertly obtain sensitive U.S. technology.  When the CIA discovered the purchase, they sabotaged the software so that it would pass Soviet inspection but fail in operation.</p>
<h3>4.  3ª Guerra Mundial (Quase!) (1983)</h3>
<p style="text-align: justify;"><strong>Custo:</strong> Quase toda a humanidade</p>
<p style="text-align: justify;"><strong>Desastre:</strong> O sistema de alerta precoce soviético falsamente indicou que os Estados Unidos tinham lançado cinco mísseis balísticos. Felizmente, o oficial de serviço soviético tinha uma &#8220;sensação esquisita no estômago&#8221; e fundamentalmente, se os EUA estavam realmente atacando, eles lançariam mais de cinco mísseis, por isso ele relatou o aparente ataque como um alarme falso.</p>
<p><strong>Causa:</strong> Um bug no software soviético falhou ao detectar reflexos solares como falsos mísseis.</p>
<h3>5.  Máquina medicinal mata (1985)</h3>
<p style="text-align: justify;"><strong>Custo:</strong> Três mortos e três seriamente feridos</p>
<p style="text-align: justify;"><strong>Desastre:</strong> A máquina de radiação canadense Therac-25 irradiou doses letais em pacientes.</p>
<p style="text-align: justify;"><strong>Causa:</strong> Por causa de um bug sutil chamado de &#8220;<em>condição de corrida</em>&#8220;, um técnico acidentalmente configurou o  Therac-25 de modo que o feixe de elétrons seria como um fogo de alta potência.</p>
<h3>6.  Crash na Wall Street (1987)</h3>
<p style="text-align: justify;"><strong>Custo:</strong> $500 bilhões em um dia</p>
<p style="text-align: justify;"><strong>Desastre:</strong> Em 19 de outubro de 1987, o índice Dow Jones  caiu 508 pontos, perdendo 22,6% de seu valor total.  Esta foi a maior perda que Wall Street já sofreu em um único dia.</p>
<p style="text-align: justify;"><strong>Causa:</strong> Um mercado em grande alta foi interrompido por uma série de investigações conduzidas pela SEC  e por outras forças do mercado. Como os investidores fugiram de ações investigadas, um número muito grande de ordens de venda foram gerados pelos computadores, quebrando sistemas e deixando os investidores efetivamente cegos.</p>
<h3><strong>7.  Linhas da AT&amp;T  &#8220;morrem&#8221; (1990)</strong></h3>
<p><strong>Custo:</strong> 75 milhões de ligações perdidas e 200 reservas aéreas perdidas</p>
<p style="text-align: justify;"><strong>Desatre:</strong> Um switch dos 114 centros de swiches da AT&amp;T sofreu um problema mecanico que fez com que todo o seu centro fosse desligado. Quando o seu centro voltou a ativa, enviou uma mensagem aos outros, o que causou o desligamento dos outros centros e deixou a empresa parada por 9 horas.</p>
<p style="text-align: justify;"><strong>Causa:</strong> Uma única linha de código em uma atualização de software implementada para acelerar chamadas causou um efeito cascata que desligou a rede.</p>
<h3>8.  Patriot Acaba com Soldados (1991)</h3>
<p><strong>Custo:</strong> 28 soldados mortos e 100 feridos.</p>
<p><strong>Desastre:</strong> Durante a primeira Guerra do Golfo, um sistema (Patriot) americano de mísseis na Arábia Saudita falhou ao interceptar um míssel vindo do Iraque. O míssel destruiu acampamentos americanos.</p>
<p style="text-align: justify;"><strong>Causa:</strong> Um erro de arredondamento no software calculou incorretamente o tempo, fazendo com que o sistema Patriot ignorasse os mísseis Scud de entrada.</p>
<h3>9.  Pentium Falha em uma Divisão Longa (1993)</h3>
<p><strong>Custo:</strong> $475 milhões e a credibilidade de uma empresa</p>
<p style="text-align: justify;"><strong>Desastre: </strong>O altamente promovido Pentium, da Intel, ocasionalmente cometeu erros ao dividir números de ponto flutuante em um intervalo específico. Por exemplo, dividindo 4195835.0/3145727.0 obteve 1,33374 ao invés de 1,33382, um erro de 0,006%. Embora o bug afetasse apenas alguns usuários, se tornou um pesadelo nas relações públicas. Com uma estimativa de 5 milhões de chips defeituosos em circulação, a Intel se ofereceu para substituir os chips Pentium apenas para os consumidores que poderiam provar que eles precisavam de alta precisão. Contudo a Intel acabou substituindo os chips de qualquer um que reclamou.</p>
<p style="text-align: justify;"><strong>Causa:</strong> O divisor na unidade de ponto flutuante do Pentium tinha uma tabela de divisão falha, faltando cerca de cinco mil entradas, resultando nestes erros de arredondamento.</p>
<h3>10.  Ariane Rocket Goes Boom (1996)</h3>
<p><strong>Custo:</strong> $500 milhões</p>
<p style="text-align: justify;"><strong>Desastre:</strong> Ariane 5, o mais novo foguete da Europa não-tripulado, foi intencionalmente destruído segundos após seu lançamento em seu vôo inaugural. Também f0ram destruídos  quatro satélites científicos para estudar como o campo magnético da Terra interage com os ventos solares.</p>
<p style="text-align: justify;"><strong>Causa:</strong> O desligamento ocorreu quando o computador de orientação tentou converter a velocidade do foguete de 64-bits para um formato de 16 bits. O número era muito grande, o que resultou em erro de estouro. Quando o sistema de orientação desligou, o controle passou para uma unidade idêntica redundante, que também falhou porque nele estava correndo o mesmo algoritmo.</p>
<h3>11.  Skynet Traz o Dia do Juízo Final (1997)</h3>
<p><strong>Custo:</strong> 6 bilhões de mortos e quase a destruição de toda a civilização humana e ecossistemas terrestres (ficção).</p>
<p style="text-align: justify;"><strong>Desatre: </strong>Alguns operadores, na tentativa de desligar a Skynet (rede mundial de computadores), acabam fazendo a empresa responder disparando mísseis nucleares dos EUA à Rússia, iniciando uma guerra nuclear global a qual o que ficou conhecida como Dia do Juízo Final (29 de agosto de 1997).</p>
<p style="text-align: justify;"><strong>Cause: </strong>Cyberdyne, o principal fabricante de armas, instalou a tecnologia Skynet em todos os equipamentos militares, incluindo bombardeiros e sistemas de defesa antimísseis. A tecnologia Skynet formava uma rede contínua e efetivamente removia recursos humanos de defesa estratégica. Eventualmente o Skynet se tornou consciente, foi ameaçado quando o homem tentou colocá-lo offline, procurou sobreviver, e revidou com uma guerra nuclear.</p>
<h3>12.  Estudo Desastroso (1999)</h3>
<p><strong>Custo:</strong> Credibilidade da ciência</p>
<p style="text-align: justify;"><strong>Desastre:</strong> Neste caso, o software utilizado para analisar os desastres tinha um desastre próprio. O jornal <em>The New England Journal of Medicin</em>e relatou aumento das taxas de suicídio depois de graves desastres naturais. Infelizmente, estes resultados mostraram-se incorretos.</p>
<p><strong>Causa: </strong> Um erro no programa mostrava a taxa de suicídios por ano como o dobro do seu valor real, o que foi suficiente para inutilizar toda a pesquisa.</p>
<h3>13.  Passaportes britânicos para lugar nenhum (1999)</h3>
<p><strong>Custo:</strong> £12.6 millões</p>
<p style="text-align: justify;"><strong>Desastre:</strong> A agência de passaportes do Reino Unido implementou um sistema da Siemens que falhou ao emitir documentos para meio milhão de cidadãos britânicos. A agência teve que pagar milhões ao governo para compensar a raiva da população.</p>
<p style="text-align: justify;"><strong>Causa:</strong> A Agência lançou seu novo sistema sem testá-lo de forma adequada ou treinar seus funcionários. Ao mesmo tempo, uma mudança na lei exigia que todos os menores de 16 anos viajando ao exterior deveriam obter um passaporte, resultando em um aumento enorme na procura de passaportes, o que sobrecarregou o sistema .</p>
<h3>14.  Bug do Milênio (1999)</h3>
<p><strong>Custo:</strong> $500 bilhões</p>
<p style="text-align: justify;"><strong>Desastre: </strong>O desastre de um homem é a fortuna de outro, como demonstra o Bug do Milênio. Empresas gastaram bilhões com programadores para corrigir uma falha no software legado. Embora nenhum falha significativa ocorreu, a preparação para o Bug do Milênio teve um custo significativo e impacto no tempo em todas as indústrias que usam a tecnologia computacional.</p>
<p style="text-align: justify;"><strong>Causa:</strong> Para economizar espaço de armazenamento de computador, softwares legados muitas vezes armazenavam anos para datas com números de dois dígitos, como 99 para 1999. Esses softwares também interpretavam 00 para significar 1900, em vez de 2000, por isso, quando o ano de 2000 veio, bugs apareceriam.</p>
<h3>15.  Tratamento de Cancêr Mortal (2000)</h3>
<p><strong>Custo:</strong> 8 pessoas mortas e 20 seriamente feridas</p>
<p style="text-align: justify;"><strong>Desastre:</strong> O software de radiação da empresa Multidate calculou mal a dosagem de radiação que deveria ser enviada, expondo pacientes a níveis fatais de radiação. Os físicos que foram indicados para checar as máquinas foram condenados a morte.</p>
<p style="text-align: justify;"><strong>Causa:</strong> O software calculava a dosagem de radiação baseando-se na ordem de entrada dos dados, e algumas vezes enviava o dobro da dose do que deveria.</p>
<h3>16.  EDS Drops Child Support (2004)</h3>
<p style="text-align: justify;"><strong>Custo:</strong> £539 milhões (e a conta ainda cresce!)</p>
<p style="text-align: justify;"><strong>Desastre:</strong> A grande empresa de serviços EDA desenvolveu um sistema para o Centro de Suporte à Crianças do Reino Unido (CSA) que acidentalmente pagou a mais 1.9 milhões de pessoas, recebeu em menos de 700.000 casos, registrando uma lista incansável de erros.</p>
<p style="text-align: justify;"><strong>Causa:</strong>A EDS apresentou um sistema de TI complexo e grande demais para o CSA, ao mesmo tempo em que tentava reestruturar a agência.</p>
<h3>17. Desatre no FBI (2005)</h3>
<p style="text-align: justify;"><strong>Custo:</strong> $105 milhões jogados fora!</p>
<p style="text-align: justify;"><strong>Desastre:</strong> O FBI desistiu da revisão de um sistema após quatro anos de esforço. O projeto Arquivo Virtual foi um maciço sistema de software integrado para agentes compartilharem arquivos de casos e outras informações.</p>
<p style="text-align: justify;"><strong>Causa:</strong> Má gestão e uma tentativa de construir um projeto de longo prazo sobre tecnologia ultrapassada, resultou em um sistema complexo e inutilizável.</p>
<p style="text-align: right;"><em>Traduzido e adaptado de <a title="20 famosos desastres de software" href="http://www.devtopics.com/20-famous-software-disasters/" target="_blank">DevTopics</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/alguns-dos-mais-famosos-erros-de-softwares-da-historia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Validação de formulários com HTML5</title>
		<link>http://www.profissionaisti.com.br/2012/01/validacao-de-formularios-com-html5/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/validacao-de-formularios-com-html5/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 11:31:22 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadunew</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20777</guid>
		<description><![CDATA[HTML5 evoluiu bastante e tem uma série de novidades entre elementos e atributos para formulários. Nesse artigo mostro um pouco sobre validação dos campos de um formulário. Acredito que em um futuro próximo os desenvolvedores não precisarão escrever o código de validação de formulário em JavaScript, por exemplo, já que os navegadores serão capazes de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">HTML5 evoluiu bastante e tem uma série de novidades entre elementos e atributos para formulários. Nesse artigo mostro um pouco sobre <strong>validação dos campos de um formulário</strong>. Acredito que em um futuro próximo os desenvolvedores não precisarão escrever o código de validação de formulário em JavaScript, por exemplo, já que os navegadores serão capazes de fazer tudo isso para nós.</p>
<h3 style="text-align: justify;">Atributo required</h3>
<p style="text-align: justify;"><strong>Utilizamos esse atributo para informar ao navegador que um elemento do formulário é de preenchimento obrigatório</strong>, ou seja, o usuário não consegue enviar o formulário se não preencher o campo com o atributo required. Seu uso é exclusivo com os elementos input, select e textarea.</p>
<p style="text-align: justify;">Uma mensagem é informada ao usuário em uma tentativa de envio de formulário sem o preenchimento de um campo com required. Esse atributo apenas verifica se o campo foi preenchido ou não. Quero dizer que, qualquer caractere será aceito.</p>
<p style="text-align: justify;">&lt;form method=&#8221;post&#8221; action=&#8221;"&gt;<br />
&lt;label for=&#8221;nome&#8221;&gt;Nome: &lt;/label&gt;&lt;input id=&#8221;nome&#8221; type=text required name=nome/&gt;<br />
&lt;input type=submit value=&#8221;OK&#8221;/&gt;<br />
&lt;/form&gt;</p>
<p style="text-align: justify;">Abaixo mostro as mensagens de alerta nos seguintes navegadores: Google Chrome, Firefox e Opera. Perceba que cada fabricante estiliza a mensagem de forma diferente.</p>
<p style="text-align: justify;"><a href="http://www.profissionaisti.com.br/wp-content/uploads/2012/01/validacao-html5.png"><img class="alignnone size-medium wp-image-20778" title="validação HTML5" src="http://www.profissionaisti.com.br/wp-content/uploads/2012/01/validacao-html5-170x300.png" alt="" width="170" height="300" /></a></p>
<h3 style="text-align: justify;">type=”email”</h3>
<p style="text-align: justify;">Atributo type de um input com a opção igual a email significa definir o campo para receber um <strong>endereço de e-mail válido</strong>. A forma de validação não verifica se o e-mail digitado realmente existe, mas sim se o formato está correto. Exemplo de um formato de email aceito: teste@teste.com.</p>
<p style="text-align: justify;">&lt;form method=&#8221;post&#8221; action=&#8221;"&gt;<br />
&lt;label for=&#8221;email&#8221;&gt;E-mail: &lt;/label&gt;&lt;input id=&#8221;email&#8221; type=email required name=email/&gt;<br />
&lt;input type=submit value=&#8221;OK&#8221;/&gt;<br />
&lt;/form&gt;</p>
<p style="text-align: justify;">Atente para o seguinte: além de ser um campo onde o usuário deve digitar um endereço de e-mail válido o campo é de preenchimento obrigatório.</p>
<p style="text-align: justify;">Alerta para o usuário caso não seja digitado nada no campo input.</p>
<p style="text-align: justify;"><a href="http://www.profissionaisti.com.br/wp-content/uploads/2012/01/validacao-input.png"><img class="alignnone size-full wp-image-20779" title="validação input" src="http://www.profissionaisti.com.br/wp-content/uploads/2012/01/validacao-input.png" alt="" width="274" height="172" /></a></p>
<p style="text-align: justify;">Alerta para o usuário caso não seja digitado um formato de e-mail no campo input.</p>
<p style="text-align: justify;"><a href="http://www.profissionaisti.com.br/wp-content/uploads/2012/01/validacao-email.png"><img class="alignnone size-medium wp-image-20780" title="Validação E-mail" src="http://www.profissionaisti.com.br/wp-content/uploads/2012/01/validacao-email-300x176.png" alt="" width="300" height="176" /></a></p>
<p style="text-align: justify;">Um recurso CSS3 pode ser usado para identificar se o elemento do formulário recebeu ou não um dado válido. Esse recurso é a pseudo classe :valid e :invalid. Assim que o usuário digitar um dado válido, o navegador altera a pseudo classe de :invalid para :valid. No exemplo abaixo o campo inicia com uma cor de fundo avermelhada, assim que o usuário digitar um formato de e-mail o campo é alterado para verde.<strong></strong></p>
<p style="text-align: justify;"><strong>Veja o CSS:</strong></p>
<p style="text-align: justify;">#email:valid {background:#006600;color:#fff }<br />
#email:invalid {background:#990000; color:#fff}</p>
<h3 style="text-align: justify;">type=”url”</h3>
<p style="text-align: justify;">Um campo input com type igual a url recebe apenas url’s no seu formato correto, ou seja, http://www.site.com, http://www.site.com.br etc.</p>
<p style="text-align: justify;">&lt;form method=&#8221;post&#8221; action=&#8221;"&gt;<br />
&lt;label for=&#8221;site&#8221;&gt;Site: &lt;/label&gt;&lt;input id=&#8221;email&#8221; type=url required name=site/&gt;<br />
&lt;input type=submit value=&#8221;OK&#8221;/&gt;<br />
&lt;/form&gt;</p>
<p style="text-align: justify;">Mensagem de alerta do navegador Chrome ao digitarmos uma url em um formato inválido.</p>
<p style="text-align: justify;"><a href="http://www.profissionaisti.com.br/wp-content/uploads/2012/01/validacao-url.png"><img class="alignnone size-full wp-image-20781" title="Validação URL" src="http://www.profissionaisti.com.br/wp-content/uploads/2012/01/validacao-url.png" alt="" width="277" height="168" /></a></p>
<h3 style="text-align: justify;">pattern = “Expressão”</h3>
<p style="text-align: justify;">Com uso do atributo pattern você pode exigir que o usuário digite valores em um padrão feito com expressão regular, ou seja, o que for digitado no compo input deverá satisfazer a expressão regular criada pelo desenvolvedor.</p>
<p style="text-align: justify;">Explicarei o atribudo criando uma expressão para entrada de um número de telefone. O valor inserido no campo de input deverá iniciar com (xx) logo terá um espaço em branco com uma sequência de quatro dígitos, um traço, e para terminar mais uma sequência de mais quatro dígitos, ficando assim: (xx) xxxx-xxxx.</p>
<p style="text-align: justify;">Abaixo o código para criar a condição descrita acima.</p>
<p style="text-align: justify;">&lt;form&gt;<br />
&lt;label&gt;Telefone: &lt;input required name=&#8221;tel&#8221; pattern=&#8221;\([0-9]{2}\)[\s][0-9]{4}-[0-9]{4}&#8221;/&gt;&lt;/label&gt; (xx) xxxx-xxxx<br />
&lt;input type=submit value=Enviar/&gt;<br />
&lt;/form&gt;</p>
<p style="text-align: justify;"><strong>\([0-9]{2}\)</strong> usuário deve digitar dois números de 0 até 9 entre parênteses.<br />
<strong>[\s][0-9]{4}-[0-9]{4}</strong> um espaço e duas sequências de números divididas por um traço.</p>
<p style="text-align: justify;">Em HTML5 há um valor para o atributo type que é o tel. Ao utilizar esse valor não há máscara de formatação ou validação, já que não há um padrão para números de telefones. Ele serve apenas para informar que o valor do campo é um número de telefone.</p>
<p style="text-align: justify;">Abaixo outro exemplo utilizando o atributo pattern, agora validando CEP</p>
<p style="text-align: justify;">&lt;form&gt;<br />
&lt;label&gt;CEP: &lt;input required name=&#8221;cep&#8221; pattern=&#8221;[0-9]{5}-[0-9]{3}&#8221;/&gt;&lt;/label&gt; (xx) xxxx-xxxx<br />
&lt;input type=submit value=Enviar/&gt;<br />
&lt;/form&gt;</p>
<h3 style="text-align: justify;">novalidate=”novalidate”</h3>
<p style="text-align: justify;">Quando presente dentro do elemento form, especifica que os elementos do formulário não devem ser validados quando submetidos mesmo que tenham em seu type atributos iguais a email, url, etc.</p>
<p style="text-align: justify;">No exemplo acima mesmo que o usuário clique no botão enviar sem preencher os campos com required o formulário será submetido. Isso porque passamos o valor novalidate=&#8221;novalidate&#8221;.</p>
<h3 style="text-align: justify;">Compatibilidade entre navegadores</h3>
<p style="text-align: justify;">Pelos testes que fiz a validação funcionou perfeitamente nos navegadores Chrome, Opera e Firefox em suas últimas versões. Navegadores como Safari e Internet Explorer não foram capazes de reconhecer tais elementos da HTML5.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/validacao-de-formularios-com-html5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Processos de Software &#8211; Produtividade e Padronização no Desenvolvimento</title>
		<link>http://www.profissionaisti.com.br/2012/01/processos-de-software-produtividade-e-padronizacao-no-desenvolvimento/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/processos-de-software-produtividade-e-padronizacao-no-desenvolvimento/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 11:43:41 +0000</pubDate>
		<dc:creator>Rafael Amaral</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[Produtividade]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20783</guid>
		<description><![CDATA[No artigo anterior sobre Processos de Software e a Qualidade do Produto, foi dito que ter grandes experiências, excelentes conhecimentos técnicos em programação, modelagem de banco de dados, tendências, etc., não são suficientes para gerar um produto de software de qualidade. Tendo em vista todo este otimismo, muitos projetos falham na entrega de suas funcionalidades [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">No artigo anterior sobre <a title="Processo de Software e a Qualidade de Produto" href="http://www.profissionaisti.com.br/2011/11/processo-de-software-e-a-qualidade-de-produto/" target="_blank">Processos de Software e a Qualidade do Produto</a>, foi dito que ter grandes experiências, excelentes conhecimentos técnicos em programação, modelagem de banco de dados, tendências, etc., não são suficientes para gerar um produto de software de qualidade. Tendo em vista todo este otimismo, muitos projetos falham na entrega de suas funcionalidades e até mesmo são interrompidos antes de sua conclusão. Pois extrapolam prazos de entrega, geram custos bem acima do previsto ou cobrado, desmotivação da equipe de desenvolvimento recorrente as correções constantes de falhas, alteração de membros da equipe,  o cliente muda frequentemente de opinião e o principal, a insatisfação dele por ter um produto fora de conformidade.</p>
<p style="text-align: justify;"><strong>Então, o que fazer?</strong></p>
<p style="text-align: justify;">A solução estaria então em adotar um <strong>Processo de Software</strong> bem definido. Muitos são os tipos de <strong>processos</strong> e muitas são as necessidades de equipes e das empresas em ter e utilizar um bom <strong>Processo de Software</strong> a fim de adquirir organização e qualidade em seus produtos, respeitando prazos de cronograma, administrando esforços de equipe, obtendo mais produtividade e padronização de desenvolvimento.</p>
<p style="text-align: justify;">Porém, não acredito que exista um único <strong>processo</strong> perfeito para o desenvolvimento de software, ou seja, para adquirir um bom <strong>processo</strong>, deve ser levado em consideração fatores como:</p>
<ul style="text-align: justify;">
<li>Tipo de software que está desenvolvendo;</li>
<li>Tamanho de equipe (desenvolvedor único, dois desenvolvedores, equipe pequena, equipe com mais de 100 membros);</li>
<li>Infraestrutura;</li>
<li>Capital investido;</li>
<li>Entre outros.</li>
</ul>
<p style="text-align: justify;">Entre diversos tipos de <strong>Processos de Softwares</strong>, destacam-se os modelos em Cascata (CMMI), Espiral, Iterativos (PU – Processo Unificado) e os <strong>modelos Ágeis</strong> (XP, Scrum).</p>
<p style="text-align: justify;">Mas por que utilizar um <strong>Processo de Software</strong>?</p>
<p style="text-align: justify;"><img class="aligncenter" title="Rafael Amaral - Processos de Software" src="http://www.rafaelamaral.com.br/images_gerente/image/rafael-amaral-processos-de-software.jpg" alt="Rafael Amaral - Processos de Software" width="452" height="247" /></p>
<p style="text-align: justify;">Dentre alguns fatores, podemos definir que o <strong>Processo de Software</strong> visa à qualidade do produto como um todo, onde é estabelecida a lógica do domínio da aplicação para o projeto decidindo seu scopo e comprometimento do Patrocinador, levantamento dos requisitos, riscos de projeto, padronização de desenvolvimento, construção do modelo e prototipagem, implementação sistemática de testes, feedback do cliente, revisões técnicas, gerência de configuração, etc. Porém, todo este conjunto (o <strong>Processo</strong>) não basta apenas ser implementado, ou seja, deve-se ter o gerenciamento do <strong>processo</strong> como um todo a fim de garantir que ele esteja sendo executado corretamente por seus envolvidos.</p>
<p style="text-align: justify;">Em outras palavras, o <strong>Processo de Software</strong> não é uma tarefa simples de implementar numa organização. Ele “afeta” diretamente seus envolvidos, no qual em alguns casos, são obrigados a saírem de suas zonas de conforto. O <strong>processo</strong> também confronta a cultura de uma empresa, e todo este conjunto gera uma certa resistência dos envolvidos em colaborar para o sucesso do mesmo.</p>
<p style="text-align: justify;">Meu artigo não é de forma alguma induzir o leitor a optar para um <strong>processo</strong> X ou Y, mas sim avaliar o nível caótico de não se utilizar um <strong>processo</strong> e os benefícios conquistados com sua aplicação.</p>
<p style="text-align: justify;">Particularmente, um dos <strong>modelos</strong> que mais me apego são os <strong>modelos Ágeis</strong>, devido a suas práticas, valores e por serem iterativos.</p>
<p style="text-align: justify;">Os modelos iterativo e evolutivo envolvem a imediata programação e teste de um sistema e considera que o desenvolvimento começa antes que os requisitos tenham sido definidos em detalhes. Evitando assim grandes desgastes e desmotivação na fase inicial.</p>
<p style="text-align: justify;">Nesta abordagem de ciclo de vida, o desenvolvimento é organizado em uma série de mini projetos curtos, de duração fixa chamadas de iterações. O produto de cada um é um sistema parcial, executável, testável e integrável. Cada iteração inclui suas próprias atividades de <a title="A análise de sistemas na construção de softwares" href="http://www.profissionaisti.com.br/2011/10/a-analise-de-sistemas-na-construcao-de-softwares/" target="_blank">análise</a> de requisitos, projeto, implementação e teste. No <strong>modelo Ágil</strong>, os detalhes de requisitos são acrescentados no decorrer do <strong>processo</strong>, utilizando assim, a modelagem na perspectiva de principalmente entender o que foi pedido e não documentar.</p>
<p style="text-align: justify;">Ao contrário, nos <strong>modelos</strong> em cascatas (ou sequencial), há uma tentativa de definir em detalhes todos ou a maioria dos requisitos antes da programação e também de criar um projeto abrangente, antes da programação. Igualmente, há uma tentativa de definir um plano ou cronograma confiável logo no início. Outro ponto a ser avaliado, é que neste <strong>modelo</strong>, modificações tardias de requisitos não são bem vindas. Deve levar-se em conta que custos de operações aqui são bem mais altos e é um modelo muito burocrático.</p>
<p style="text-align: justify;">Apesar do meu apego ao <strong>modelo Ágil</strong>, o ideal é que as equipes criem seu próprio <strong>Processo de Software</strong>, olhando na perspectiva de não diminuir o valor de outros métodos e sim, agregando as boas práticas mais comuns que atendam as suas necessidades dentro da sua realidade, não se esquecendo de manter um contínuo amadurecimento do <strong>processo</strong> como um todo.</p>
<p style="text-align: justify;">Fonte: <a href="http://www.rafaelamaral.com.br/" target="_blank">Blog Rafael Amaral</a><br />
Twitter: <a href="http://twitter.com/#%21/rafaelamaralll" target="_blank">@rafaelamaralll</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/processos-de-software-produtividade-e-padronizacao-no-desenvolvimento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução ao iBatis (MyBatis) &#8211; Uma alternativa para Hibernate e JDBC</title>
		<link>http://www.profissionaisti.com.br/2012/01/introducao-ao-ibatis-mybatis-uma-alternativa-para-hibernate-e-jdbc/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/introducao-ao-ibatis-mybatis-uma-alternativa-para-hibernate-e-jdbc/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 10:49:54 +0000</pubDate>
		<dc:creator>Sérgio Novelli</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[iBatis]]></category>
		<category><![CDATA[MyBatis]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20686</guid>
		<description><![CDATA[Olá, caros amigos do PTI. Hoje trago para todos um assunto bastante interessante para quem está inserido no mundo da programação. Trata-se do framework iBatis. O texto é uma tradução do post de Loiane Groner, em seu blog oficial. Loiane é uma profissional experiente desse framework e tem deixado excelentes tutoriais em seu blog. Segue [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft" src="http://loianegroner.com/wp-content/uploads/2011/01/ibatis_mybatis_loiane.png" alt="" width="274" height="149" />Olá, caros amigos do PTI. Hoje trago para todos um assunto bastante interessante para quem está inserido no mundo da programação. Trata-se do framework iBatis. O texto é uma tradução do post de <a title="Blog oficial de Loiante Groner" href="http://loianegroner.com/2011/02/introduction-to-ibatis-mybatis-an-alternative-to-hibernate-and-jdbc/" target="_blank">Loiane Groner</a>, em seu blog oficial. Loiane é uma profissional experiente desse framework e tem deixado excelentes tutoriais em seu blog. Segue o texto.</p>
<p style="text-align: justify;">&#8220;Comecei a escrever uma série de artigos sobre o iBatis / MyBatis. Este é o primeiro artigo e ele irá orientá-lo através do que é iBatis / MyBatis e porque você deve usá-lo.</p>
<p style="text-align: justify;">Para quem não sabesobre iBatis / MyBatis ainda, é um framework de persistência &#8211; uma alternativa ao JDBC e Hibernate, disponível para plataformas Java e NET. Eu tenho trabalhado com ele por quase dois anos, e estou gostando!</p>
<p style="text-align: justify;">Um primeiro detalhes que você pode observar neste e nos artigos seguintes sobre o iBatis / MyBatis é que eu estou usando os termos Mybatis e iBatis. Por quê? Até junho de 2010, iBatis foi sob licença Apache e, a partir deste ano, os fundadores decidiram movê-lo para o Google Code e renomeá-lo para MyBatis. O framework ainda é o mesmo, só tem um nome diferente agora.<br />
Juntei algumas definições as quais vou citá-las:</p>
<h3 style="text-align: justify;"><strong>O que é o MyBatis/iBatis?</strong></h3>
<p style="text-align: justify;">O framework mapeador de dados MyBatis torna mais fácil de usar um banco de dados relacional com aplicações orientadas a objeto. MyBatis trabalha com procedimentos armazenados ou instruções SQL usando um descritor XML. Simplicidade é a maior vantagem do mapeador de dados MyBatis sobre ferramentas de mapeamento objeto relacional.</p>
<p style="text-align: justify;">Para usar o mapeador de dados MyBatis, você usa seus próprios objetos, XML e SQL. Há pouco à saber que você ainda não sabe. Com o MyBatis, você tem todo o poder do SQL e procedimentos armazenados ao seu alcance. (<a title="Site oficial do iBatis" href="http://www.mybatis.org" target="_blank">www.mybatis.org</a>)</p>
<p style="text-align: justify;">O iBATIS é baseado na idéia de que há valor em bancos de dados relacionais e SQL, e que é uma boa idéia de abraçar o investimento a nível de indústria em SQL. Temos experiências em que o banco de dados SQL e até mesmo a ele próprio, ter sobrevivido ao código-fonte do aplicativo, e até mesmo a várias versões do código-fonte. Em alguns casos, vimos que um aplicativo foi reescrito em uma linguagem diferente, mas o SQL e banco de dados permaneceram praticamente inalterados.</p>
<p style="text-align: justify;">É por essas razões que iBATIS não tenta esconder ou evitar SQL. É um framework da camada de persistência que abraça o SQL, tornando mais fácil trabalhar com banco de dados e mais fácil de integrar com softwares orientados a objetos modernos. Atualmente, há rumores de que bancos de dados e SQL ameaçam nossos modelos de objeto, mas este não é o caso. iBATIS pode ajudar a garantir que não é. (<a title="Livro iBatis em Ação" href="http://www.amazon.com/gp/product/1932394826?ie=UTF8&amp;tag=loiagron-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1932394826" target="_blank">Livro iBatis em Ação (iBatis in Action)</a>)</p>
<p style="text-align: justify;">Então&#8230;</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;">O que é iBatis?</span></h4>
<ul>
<li>Um framework JDBC;</li>
<li>Os desenvolvedores escrevem SQL, iBATIS o executa usando JDBC;</li>
<li>Não precisa mais usar try / catch / finally / try / catch;</li>
<li>Um mapeador SQL;</li>
<li>Automaticamente mapeia propriedades do objeto em parâmetros de prepared statements;</li>
<li>Resulta automaticamente mapas de objetos;</li>
<li>Suporte a consultas com relacionamento N +1;</li>
<li>Um gerenciador de transações;</li>
<li>iBATIS fornece um gerenciamento de transações para operações de banco de dados se nenhuma outra transação está disponível;</li>
<li>iBATIS usa o gerenciamento de transações externas (Spring, EJB CMT, etc), se disponível;</li>
<li>Grande integração com Spring, mas também pode ser usado sem Spring.</li>
</ul>
<h4 style="text-align: justify;"><span style="text-decoration: underline;">O que não é iBatis?</span></h4>
<ul>
<li>ORM;</li>
<li>Não gera SQL;</li>
<li>Não tem uma linguagem de consulta de propriedade;</li>
<li>Não saber sobre a identidade do objeto;</li>
<li>Não transparente persistir objetos;</li>
<li>Não construir um cache de objeto;</li>
</ul>
<p style="text-align: justify;">Essencialmente, iBatis é uma solução de persistência muito leve que lhe dá a maior parte da semântica de um conjunto de ferramentas de mapeamento Objeto/Relacional, sem nenhum drama. Em outras palavras, iBATIS se esforça para facilitar o <a href="http://www.profissionaisti.com.br/category/desenvolvimento/">desenvolvimento</a> de aplicações orientadas a dados abstraindo os detalhes de baixo nível envolvidos na comunicação de dados (o carregamento de um driver de banco de dados, obtenção e gestão de conexões, gerenciar semântica da transação, etc), bem como proporcionar maior nível ORM (mapeamento automatizado e configurável de objetos para chamadas SQL, gerenciamento de dados de conversão de tipo, suporte para consultas estáticas, bem como consultas dinâmicas baseadas em estado de um objeto, mapeamento de joins complexos para gráficos de objetos complexos, etc.). iBATIS simplesmente mapeia JavaBeans para declarações SQL usando um descritor XML muito simples. A simplicidade é a principal vantagem iBATIS sobre outros frameworks e ferramentas de mapeamento objeto relacional (<a title="Developers Book" href="http://www.developersbook.com/" target="_blank">Http://www.developersbook.com</a>).</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;">Quem está usando iBatis / MyBatis?</span></h4>
<p style="text-align: justify;">Existe uma grande quantidade de projetos já utilizando o iBatis. <a title="Lista de exemplos de projetos utilizando o iBatis" href="http://www.apachebookstore.com/confluence/oss/pages/viewpage.action?pageId=25" target="_blank">Veja uma lista de exemplo</a>.</p>
<p style="text-align: justify;">Acho que o maior caso é o MySpace, com milhões de usuários. Muito bom!&#8221;</p>
<p style="text-align: justify;">Espero que tenham gostado do post. Dúvidas, deixem nos comentários. Até o próximo post!</p>
<p style="text-align: justify;">Autor/Post Original: <a title="Post oficial de Loiante Groner" href="http://loianegroner.com/2011/02/introduction-to-ibatis-mybatis-an-alternative-to-hibernate-and-jdbc/" target="_blank">Loiane Groner</a><br />
Tradução: Google Translator<br />
Adaptação: <a href="http://www.profissionaisti.com.br/author/sergionovelli/" target="_blank">Sérgio Novelli</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/introducao-ao-ibatis-mybatis-uma-alternativa-para-hibernate-e-jdbc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Melhorando a divulgação de conteúdos nas redes sociais</title>
		<link>http://www.profissionaisti.com.br/2012/01/melhorando-a-divulgacao-de-conteudos-nas-redes-sociais/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/melhorando-a-divulgacao-de-conteudos-nas-redes-sociais/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 10:39:44 +0000</pubDate>
		<dc:creator>gabiifonseca</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Redes Sociais]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20695</guid>
		<description><![CDATA[Praticamente todo site tem também um perfil em alguma rede social. Contudo, na hora de divulgar o seu conteúdo nas redes, prestar atenção em alguns tópicos básicos poderá atrair mais visitantes para suas páginas, deixando o seu &#8220;anúncio&#8221; com um visual mais interessante. Ao se postar um link no Facebook, por exemplo, alguns dados do [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Praticamente todo site tem também um perfil em alguma rede social. Contudo, na hora de divulgar o seu conteúdo nas redes, prestar atenção em alguns tópicos básicos poderá atrair mais visitantes para suas páginas, deixando o seu &#8220;anúncio&#8221; com um visual mais interessante.</p>
<p style="text-align: justify;">Ao se postar um link no Facebook, por exemplo, alguns dados do artigo principal da página são extraídos automaticamente, como mostra a imagem abaixo:</p>
<p><a href="http://eufacoprogramas.com/wp-content/uploads/2012/01/melhorar-seu-blog-nas-redes-sociais.jpg"><img class="aligncenter size-full wp-image-1563" title="melhorar seu blog nas redes sociais" src="http://eufacoprogramas.com/wp-content/uploads/2012/01/melhorar-seu-blog-nas-redes-sociais.jpg" alt="melhorar seu blog nas redes sociais" width="497" height="168" /></a></p>
<p>Como essa extração funciona de maneira similar na maioria das redes sociais, é importante estar atento a alguns itens de sua página. De uma maneira geral, esse itens são:</p>
<p><strong>01 &#8211; Atributo <em>title &#8211; Título</em></strong></p>
<p style="text-align: justify;">Como o próprio nome diz, o atributo <em>title, </em>que é definido entre as tags <em>&lt;title&gt;Título &lt;/title&gt;</em> de seu documento, no <em>&lt;head</em>&gt;, é o título da página. Como o seu site tem várias páginas, e cada uma tem um conteúdo único, é legal customizar esse atributo com o assunto referente a página, ao invés do uso de um um único <em>title </em>para todo o site. Uma prática bacana é seguir o conteúdo do site pelo seu nome, como no exemplo:</p>
<p style="text-align: center;"><em>&lt;title&gt; Desenvolvendo para WordPress &#8211; Eu Faço Programas &lt;/title&gt;</em></p>
<p><strong>02 &#8211; Descrição</strong></p>
<p style="text-align: justify;">A meta tag <em>Description</em>, embora não seja efetivamente utilizada como ranking pelos principais mecanismos de busca, é extremamente importante, já que representa uma síntese do que o usuário poderá ver na página. Procure ser sucinto, não ultrapassar o conteúdo recomendado de até 160 caracteres e criar um texto atrativo e com muitas palavras-chave. Para essa postagem, por exemplo, foi utilizado o seguinte código, dentro de <em>&lt;head&gt;:</em></p>
<p style="text-align: center;"><em>&lt;meta name=&#8221;description&#8221; content=&#8221;Aprenda cinco dicas fáceis para melhorar a visualização de seu conteúdo nas redes sociais.</em>&#8220;&gt;</p>
<p><strong>03 &#8211; Thumbnails</strong></p>
<p style="text-align: justify;">Colocar imagens em suas páginas é sempre interessante pois usuários gostam de visuais bacanas e na maioria das vezes não estão interessados em textos longos. Escolha um boa imagem ao compartilhar seu conteúdo pois agirá como seu cartão de visitas, podendo atrair ou afastar leitores.</p>
<p style="text-align: justify;">Outra dica é trabalhar uma identidade visual para seu site. Pode ser um boneco, uma ilustração, foto ou fonte diferenciada, mas deve ser algo que faça com que o usuário, ao visualizar a imagem, possa lembrar de seu site. Invista na sua criatividade! Colocar essa imagem especial como <em>Favicon</em>, ou seja, como o ícone que é exibido quando a página é aberta no navegador (observe na imagem abaixo o favicon da wikipédia) é simples e leva apenas alguns segundos:</p>
<p><img class="aligncenter" src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Wikipedia_favicon_in_Firefox_on_KDE.png/300px-Wikipedia_favicon_in_Firefox_on_KDE.png" alt="" width="300" height="180" /></p>
<p style="text-align: center;"><em>&lt;link rel=&#8221;shortcut icon&#8221; href=&#8221;ENDEREÇO DA IMAGEM&#8221;&gt;</em></p>
<p style="text-align: right;"><em>Postado originalmente em <a title="Melhorar conteúdo nas redes sociais" href="http://eufacoprogramas.com/geral/dicas-simples-para-melhorar-a-divulgacao-de-conteudo-nas-redes-sociais/" target="_blank">Eu Faço Programas</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/melhorando-a-divulgacao-de-conteudos-nas-redes-sociais/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle: otimizando a performance de aplicações com stored procedures</title>
		<link>http://www.profissionaisti.com.br/2012/01/oracle-otimizando-a-performance-de-aplicacoes-com-stored-procedures/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/oracle-otimizando-a-performance-de-aplicacoes-com-stored-procedures/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 10:25:56 +0000</pubDate>
		<dc:creator>Fábio Prado</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Stored Procedures]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20397</guid>
		<description><![CDATA[Olá pessoal, No artigo de hoje vou escrever sobre um assunto que eu comento e demonstro em mais detalhes nos meus treinamentos de Tuning de SQL em Oracle 10G/11G, que é a performance das stored procedures (SPs) nas aplicações. O uso de stored procedures, em substituição ao uso de instruções SQL, pode otimizar drásticamente a performance de aplicações [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Olá pessoal,</p>
<p style="text-align: justify;">No artigo de hoje vou escrever sobre um assunto que eu comento e demonstro em mais detalhes nos meus treinamentos de <a href="http://www.fabioprado.net/p/treinamentos.html" target="_blank">Tuning de SQL em Oracle 10G/11G</a>, que é a performance das stored procedures (SPs) nas aplicações. O uso de <strong><span style="color: #274e13;">stored procedures</span></strong>, em substituição ao uso de <span style="color: #ff0000;">instruções SQL</span>, pode otimizar drásticamente a performance de aplicações que acessam/atualizam bancos de dados (BDs).</p>
<p style="text-align: justify;">No exemplo deste artigo as regras de negócio estão dentro da SPs. Muita gente é contra esta prática, pois aprendemos em arquitetura de sistemas que as regras de negócio devem ficar na aplicação e não no BD. Concordo em partes, pois em aplicações críticas, que exigem alta performance, o que é mais importante: uma aplicação filosóficamente melhor (com regras de negócio na aplicação) ou uma aplicação mais rápida?</p>
<p style="text-align: justify;">Vou demonstrar a seguir, um exemplo de uma aplicação bem simples que eu desenvolvi com o <strong>Dot Net Framework 3.5, </strong>para provar o conceito de que SPs podem otimizar a performance das aplicações. A aplicação, chamada <strong>Teste de performance de transações</strong>, poderá ser baixada para testes e é totalmente parametrizável (ver arquivo <em>TesteTransacao.exe.config). </em>Ela simula<em> </em>a realização de simples transferências entre contas bancárias, retirando o valor de uma conta corrente (conta origem) e depositando o respectivo valor em outra conta corrente (conta destino).</p>
<table cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td><a href="http://4.bp.blogspot.com/-hVX3hDUZosw/TnSZNHBcagI/AAAAAAAAAN8/c2M20jd0Os8/s1600/img1_app.jpg"><img class="aligncenter" src="http://4.bp.blogspot.com/-hVX3hDUZosw/TnSZNHBcagI/AAAAAAAAAN8/c2M20jd0Os8/s320/img1_app.jpg" alt="" width="320" height="296" border="0" /></a></td>
</tr>
<tr>
<td>Figura 1 &#8211; Tela principal da aplicação &#8220;Testes de performance de Transações&#8221;</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">A operação de transferência ocorre em modo transacional (deve fazer tudo ou nada, se 1 passo falhar, desfaz os passos anteriores), composto por 3 passos:</p>
<p style="text-align: justify;">a) Verificar se a conta origem possui saldo para efetuar a transferência;</p>
<p style="text-align: justify;">b) Retirar (sacar) valor da conta origem;</p>
<p style="text-align: justify;">c) Depositar valor na conta destino;</p>
<p style="text-align: justify;">A aplicação está disponível para download no MEU SKY DRIVE (ver painel direito da página principal do meu blog), pasta <a href="http://www.profissionaisti.com.br/tag/oracle/"><em>Oracle</em></a> -&gt; <em>Scripts</em>, arquivo <em>TesteTransacao.zip. </em>Para efetuar a instalação e utilizá-la, siga os passos abaixo:</p>
<p style="text-align: justify;">1- Descompactar o arquivo <em>TesteTransacao.zip;</em></p>
<p style="text-align: justify;">2- Conectar-se no BD desejado e instalar os objetos de BD (tabela CONTA e package PKG_CONTA) que estão no arquivo <em>Script_BD_Teste_Transacao.sql. </em>Instale os objetos no schema de um usuário que será utilizado pela aplicação para conectar-se no BD.</p>
<p style="text-align: justify;">3- Configurar os valores (<em>values</em>) dos parâmetros<em> (keys) </em>do arquivo <em>TesteTransacao.exe.config, </em>conforme indicações abaixo:</p>
<ol style="text-align: justify;">
<li><strong>instance_name = </strong>Nome da instância do BD onde os objetos foram criados. Especificar nome de uma instância cadastrada no arquivo <em>tnsnames.ora</em> da máquina em que a aplicação irá ser executada;</li>
<li><strong>user_name = </strong>Nome do usuário que a aplicação utilizará para conectar-se no BD;</li>
<li><strong>pwd_user = </strong>Senha<strong> </strong>do usuário que a aplicação utilizará para conectar-se no BD;</li>
<li><strong>idContaOrigem = </strong>Número da conta origem;</li>
<li><strong>idContaDestino = </strong>Número da conta destino;</li>
<li><strong>vlInicialContaOrigem</strong> = Valor inicial da conta origem;</li>
<li><strong>vlInicialContaDestino</strong> = Valor inicial da conta destino;</li>
<li><strong>intTotalInteracoes</strong> = Valor indicando qtde. de operações de transferências que serão realizadas;</li>
<li><strong>vlTransferencia</strong> = Valor da transferência.</li>
</ol>
<p style="text-align: justify;">Para efetuar os testes, basta clicar nos 2 botões existentes na tela principal da aplicação: <em>Transferência Ad hoc</em> e <em>Transferência com SP. </em>O botão <em>Transferência Ad hoc </em>submete instruções SQL para o BD, enquanto que, o botão <em>Transferência com SP, </em>executa uma stored procedure no BD para executar as mesmas instruções SQL.</p>
<p style="text-align: justify;">Vejam abaixo, a performance de testes que eu fiz:</p>
<p style="text-align: justify;"><span style="text-decoration: underline;"><strong>TESTE 1: 1 transferência bancária</strong></span></p>
<p style="text-align: justify;">a) Tempo de Transferência do botão <em>Transferência Ad hoc: </em><strong>0,015s</strong></p>
<table cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td><a href="http://4.bp.blogspot.com/-a6cZ6ras7sY/TnSdK-gwMQI/AAAAAAAAAOI/DP10sxJBiww/s1600/img4_app.jpg"><img src="http://4.bp.blogspot.com/-a6cZ6ras7sY/TnSdK-gwMQI/AAAAAAAAAOI/DP10sxJBiww/s320/img4_app.jpg" alt="" width="320" height="120" border="0" /></a></td>
</tr>
<tr>
<td>Figura 2 &#8211; Teste de 1 transferência com SQL (ad hoc)</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">b) Tempo de Transferência do botão <em>Transferência com SP:  </em><strong>0,00s</strong></p>
<table cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td><a href="http://2.bp.blogspot.com/-7_iH1BHfQrE/TnSdx2NaaTI/AAAAAAAAAOM/lNkLgmIxQIA/s1600/img5_app.jpg"><img src="http://2.bp.blogspot.com/-7_iH1BHfQrE/TnSdx2NaaTI/AAAAAAAAAOM/lNkLgmIxQIA/s320/img5_app.jpg" alt="" width="320" height="136" border="0" /></a></td>
</tr>
<tr>
<td>Figura 3 &#8211; Teste de 1 transferência com SP</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;"><span style="text-decoration: underline;"><strong>TESTE 2: 1000 transferências bancárias</strong></span></p>
<p style="text-align: justify;">a) Tempo de Transferência do botão <em>Transferência Ad hoc: </em><strong>9,90s</strong></p>
<table cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td><a href="http://3.bp.blogspot.com/-pYR7EO9cwM8/TnSbPTA7fZI/AAAAAAAAAOA/6wXgyHByWlM/s1600/img2_app.jpg"><img src="http://3.bp.blogspot.com/-pYR7EO9cwM8/TnSbPTA7fZI/AAAAAAAAAOA/6wXgyHByWlM/s320/img2_app.jpg" alt="" width="320" height="116" border="0" /></a></td>
</tr>
<tr>
<td>Figura 4 &#8211; Teste de 1000 transferências com SQL (ad hoc)</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">b) Tempo de Transferência do botão <em>Transferência com SP: </em><strong>0,23s</strong></p>
<div style="text-align: justify;">
<table cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td><a href="http://2.bp.blogspot.com/-5WKMKjF9-HY/TnSb7Fn_dSI/AAAAAAAAAOE/Vwt3NeLqNF4/s1600/img3_app.jpg"><img src="http://2.bp.blogspot.com/-5WKMKjF9-HY/TnSb7Fn_dSI/AAAAAAAAAOE/Vwt3NeLqNF4/s320/img3_app.jpg" alt="" width="320" height="116" border="0" /></a></td>
</tr>
<tr>
<td>Figura 5 &#8211; Teste de 1000 transferências com SP</td>
</tr>
</tbody>
</table>
</div>
<p style="text-align: justify;"><strong>CONCLUSÃO:</strong></p>
<p style="text-align: justify;"><strong></strong>No Teste 1, de acordo com o tempo de execução da transferência <a href="http://www.profissionaisti.com.br/tag/sql/">SQL</a> e transferência com SP, pudemos verificar que a 2ª (com SP) foi mais rápida, mas o teste com 1 só transferência não foi não tão eficiente para demonstrar o ganho em usar SP (a execução foi tão rápida que não foi possível computar o tempo (0,00s) através da aplicação).</p>
<p style="text-align: justify;">No Teste 2, realizando 1000 transações, conseguimos verificar que o ganho de performance utilizando SP foi brutal. Com SP, pudemos verificar que o tempo das 1000 transferências foi <strong><span style="color: #274e13;">43 vezes mais rápido </span></strong>que as 1000 transferências submetendo <a href="http://www.profissionaisti.com.br/tag/sql/">SQL</a> para a aplicação.</p>
<p style="text-align: justify;">Mais detalhes, sobre a estrutura da aplicação, o porquê da stored procedure apresentar um desempenho superior neste exemplo e sobre a implementação de regras de negócio na aplicação ou na stored procedure, eu explico em meus treinamentos!</p>
<p style="text-align: justify;">Por hoje é só!</p>
<p style="text-align: justify;">[]s</p>
<p style="text-align: justify;">Fonte: <a href="http://www.fabioprado.net/2011/09/otimizando-performance-de-aplicacoes.html" target="_blank">http://www.fabioprado.net/2011/09/otimizando-performance-de-aplicacoes.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/oracle-otimizando-a-performance-de-aplicacoes-com-stored-procedures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Análise de Sistemas &#8211; Casos de Uso</title>
		<link>http://www.profissionaisti.com.br/2012/01/analise-de-sistemas-casos-de-uso/</link>
		<comments>http://www.profissionaisti.com.br/2012/01/analise-de-sistemas-casos-de-uso/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 10:40:36 +0000</pubDate>
		<dc:creator>Rafael Amaral</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Gestão]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.profissionaisti.com.br/?p=20648</guid>
		<description><![CDATA[Desde que iniciei meus estudos em Análise de Sistemas, não consigo imaginar uma situação ao qual não usaria Casos de Uso na construção de software. Pois sem dúvida, podemos defini-los como uma ferramenta essencial na captura de requisitos, no planejamento e no controle de um projeto. Um assunto sempre polêmico, mesmo ainda iniciante nesta área, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Desde que iniciei meus estudos em <a title="Análise de Sistema na Construção de Software" href="http://www.profissionaisti.com.br/2011/10/a-analise-de-sistemas-na-construcao-de-softwares/" target="_blank"><strong>Análise de Sistemas</strong></a>, não consigo imaginar uma situação ao qual não usaria <strong>Casos de Uso</strong> na construção de software. Pois sem dúvida, podemos defini-los como uma ferramenta essencial na captura de <strong>requisitos</strong>, no planejamento e no controle de um projeto.</p>
<p style="text-align: justify;">Um assunto sempre polêmico, mesmo ainda iniciante nesta área, tenho visto algumas definições diversificadas de profissionais (especialistas ou não) sobre o tema.</p>
<p style="text-align: justify;">Alguns definem <strong>Casos de Uso</strong> apenas em sua notação gráfica (os diagramas), porém, <strong>Casos de Uso</strong> vão muito além. <strong>Casos de Uso</strong> são elementos primários no <a href="http://www.profissionaisti.com.br/category/desenvolvimento/">desenvolvimento</a> e planejamento do projeto. Ele facilita o entendimento e a comunicação com o stakeholder, pois <strong>Casos de Uso</strong> representam uma visão externa do sistema e aplicando uma boa técnica na sua utilização, eles são com certeza uma melhor maneira de levantar bons <a href="http://www.profissionaisti.com.br/2011/06/levantamento-de-requisitos-voce-sabe-o-que-e/"><strong>requisitos de sistema</strong></a>. Em outras palavras, <strong>Casos de Uso</strong> descrevem o comportamento do sistema sob diversas condições conforme o sistema responde a uma requisição de um ator primário, no qual este (ator primário) inicia uma interação com o sistema para atingir algum objetivo.</p>
<p style="text-align: justify;">Um formato simples para captura de um <strong>Caso de Uso</strong> consiste na descrição de seu cenário primário como uma sequência de passos numerados e as alternativas como variações naquela sequência.</p>
<p style="text-align: justify;">Existe muita variação no modo como você pode descrever os conteúdos de um <strong>Caso de Uso</strong>, porém, a UML não especifica padrão algum. Mas, acrescente informações sempre que julgar necessárias, principalmente, vendo isto pela perspectiva do risco, ou seja, acrescente detalhes de acordo com o grau de risco, quanto maior o risco, mais detalhes você precisa. Mas, não se desespere em detalhes, ou seja, entre neles aos poucos durante sua elaboração e durante as iterações, vá acrescentando mais detalhes à medida do necessário. Porém, chamo sua atenção para a simplicidade, pois um <strong>Caso de Uso</strong> bem escrito é fácil de ler, porém, aprender a escrever um bom caso de uso é difícil.</p>
<p style="text-align: justify;">Mas, o que é realmente, um<strong> Caso de Uso</strong>?</p>
<p style="text-align: center;"><a href="http://www.rafaelamaral.com.br//images_gerente/image/rafael-amaral-casos-de-uso.jpg"><img class="aligncenter" title="Rafael Amaral - Casos de Uso" src="http://www.rafaelamaral.com.br//images_gerente/image/rafael-amaral-casos-de-uso.jpg" alt="Rafael Amaral - Casos de Uso" width="522" height="314" /></a></p>
<p style="text-align: justify;">Um <strong>Caso de Uso</strong> captura um contrato entre os stakeholders de um sistema sobre o seu comportamento. Um <strong>Caso de Uso</strong> descreve o comportamento do sistema sob diversas condições conforme o sistema responde a uma requisição de um ator primário.</p>
<p style="text-align: right;"><em>Alistair Cockburn</em></p>
<p style="text-align: justify;">Uma outra definição mais compreensiva, explico primeiro o que é um cenário.<br />
<strong>Cenário:</strong> é uma sequência de passos que descreve uma interação entre um usuário e um sistema.</p>
<p style="text-align: justify;"><strong>Caso de Uso</strong>, então, é um conjunto de cenários amarrados por um objetivo comum de um usuário.</p>
<p style="text-align: right;"><em>Martin Folwer</em></p>
<p style="text-align: justify;">Finalizando, <strong>Casos de Uso</strong> têm uma grande importância na construção de projeto e é um assunto para mais de &#8220;Gigas&#8221;. Sobre diversos aspectos, eles são essenciais em uma infinidade de coisas desde o início ao fim das iterações do projeto. Para iniciantes na área, dedicar-se na leitura de <a href="http://www.linuxmall.com.br/categoria/livros_programacao?afl=pti" target="_blank">bons livros</a> sobre o assunto irá fazer toda a diferença na hora de analisar e/ou dirigir um projeto.</p>
<p style="text-align: justify;">Fonte: <a href="http://www.rafaelamaral.com.br/" target="_blank">Blog Rafael Amaral</a><br />
Twitter: <a title="Rafael Amaral no Twitter" href="http://twitter.com/#!/rafaelamaralll" target="_blank">@rafaelamaralll</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.profissionaisti.com.br/2012/01/analise-de-sistemas-casos-de-uso/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

