Você está na página 1de 31

Codificando Net

POWERED BY

e-magazine
CODIFICANDO.NET

J A N / F E V 2 0 0 7
E D I Ç Ã O 6 N Ú M E R O 5 A N O I

Editorial
Parece que foi ontem, mas já estamos em 2008. Esta primeira edição do ano contempla excelentes mate-
riais e colunas e inicia uma fase em que a revista passa a lutar por um conteúdo mais ligado ao dia-a-dia
dos profissionais de tecnologia e desenvolvimento.

A revista Codificando.Net cresceu nos últimos tempos em relação ao número de downloads mas enco-
lheu em relação ao número de colaboradores. As portas estão abertas para toda comunidade. Nosso
editorial é totalmente aberto para contribuições da comunidade e estamos sempre aguardando que as
pessoas tomem o gosto por divulgar tecnologia.

Esta edição também apresenta mais dois editores Diego Nogare e Sergio Gonçalves (Ganso) com o obje-
tivo de dar um novo sangue ao nosso time e conseguirmos aumentar o conteúdo a cada edição.

Vamos lá pessoal, mostrem suas caras!

Alexandre Tarifa
editor@codificandomagazine.net

Equipe
Editor:
Alexandre Tarifa
Emerson Facunte
Diego Nogare
Sergio Gonçalves
Fernando Borges (Capa)

Reporter
Alfred Myers
Colaboradores:
Feio Tomaz
Maurício Wieler
Diego Nogare
Alexandre Lopes
3
Entrevista - Lançamentos 2008
A revista Codificando e-Magazine através do repórter Alfred Myers, MVP de C#, realizou uma pesquisa por e-
mail com os principais nomes da tecnologia no Brasil, fazendo três perguntas sobre os lançamentos das versões
2008 das ferramentas de Desenvolvimento e Infra-Estrutura. As perguntas foram elaboradas pelo nosso repór-
ter de plantão Alfred Myers.

Perguntas:
1) Qual a principal novidade em 2008 do produto ou tecnologia na qual você é MVP?
2) Quais as ferramentas que não poderão faltar no seu computador em 2008?
3) Qual idéia, ferramenta, produto, tecnologia você acha que ganhará destaque em 2008? Por quê?

Bruno Sonnino – Microsoft MVP (Client Application Development)


Desenvolvedor e consultor de sistemas. É autor de 7 livros e mais de uma centena de artigos publicados em
revistas nacionais e estrangeiras. Às vezes, pode ser encontrado dando palestras em eventos como o TechEd e
BorCon. Ele desenvolve utilitários para a revista PCMagazine americana (http://www.pcmag.com/download).

1) Acredito que 2008 deve ser o ano do Silverlight, com o lançamento do Silverlight 2.0 e a possibilidade de
desenvolver aplicativos .net para múltiplas plataformas no browser.
2) O Visual Studio 2008 é uma ferramenta bastante completa para o desenvolvimento de aplicações .Net, des-
de aplicações WinForms/WPF ou Silverlight até aplicações para Compact Framework ou Office.
3) O Silverlight deve ganhar destaque, com a possibilidade da criação de aplicações ricas para a Web. Com ele,
o XAML deve ganhar maior destaque e, por conseqüência, as atenções devem se voltar também para o
WPF, na criação de aplicações desktop.

Hélio Sá Moreira – Microsoft MVP (Office Sharepoint Server 2007)


Microsoft MVP (Most Valuable Professional) em Office Sharepoint Server 2007, especialista em arquitetura e
implementação de soluções corporativas com atuação direta nas maiores e mais importantes empresas na-
cionais.

1) As tecnologias Sharepoint (Windows Sharepoint Services 3.0 e Office Sharepoint Server 2007) estão enqua-
dradas na próxima onda (wave) de lançamentos da Microsoft; portanto, acredito que grandes novidades
neste contexto devem ser esperadas para 2009/2010!
Outrora, tenho acompanhado algumas movimentações interessantes para:
 Suportabilidade do Windows Sharepoint Services 3.0 como uma role do Windows Server 2008
[lançamento confirmado para este ano] – sendo uma implementação anunciada pelos times de produto. Mas
há alguns meses atrás esta discussão foi novamente colocada em pauta, e a decisão final foi para a não im-
plementação desta funcionalidade por questões de flexibilidade e independência entre os produtos e, conse-
qüentemente, entre as versões/build´s dos mesmos.
 A suportabilidade das tecnologias Sharepoint ao SQL Server 2008 – onde acredito que seja praticamente
nativo, sem grandes necessidades de modificações ou “fixes”.
 O Visual Studio .Net 2008 já foi lançado, e apresenta diversas (muitas novidades) para o desenvolvimento
de aplicações. No cenário de desenvolvimento e customizações avançadas para as tecnologias Sharepoint,
onde normalmente o Visual Studio .Net 2005 é a ferramenta ideal, o lançamento do Visual Studio .Net 2008
4
Entrevista - Lançamentos 2008
trás grandes evoluções no desenvolvimento de workflows baseados no Windows Workflow Foundation.
Alias, espero que este lançamento (Visual Studio .Net 2008) seja um fator motivador para as próximas versões
do “Windows SharePoint Services 3.0 Tools: Visual Studio Extensions”

2. Windows Vista (with SP1), Office System 2007 (with SP1). InfoPath 2007, OneNote 2007, Groove
2007, Microsoft ® Business Data Catalog Definition Editor, Visual Studio .Net 2008 (Windows Workflow Foun-
dation e Windows SharePoint Services 3.0 Tools: Visual Studio Extensions), BdcMetaMan, Microsoft Virtual PC
e Microsoft Virtual Server 2005.
O resto vai ficar virtualizado! ;-)

3. Eu acredito que o SQL Server 2008 seja a grande sensação deste ano. Primeiramente pelas funcionali-
dades e características anunciadas durante as versões betas e CTP (Community Technology Preview), que re-
presentam um avanço incrível nas capacidades de gerenciamento e otimização no modelo de armazenamento de
dados corporativos.
Minha sensação também é baseada na própria arquitetura da plataforma de produtos, serviços e soluções Micro-
soft que - com exceção do Exchange Server (e provavelmente de outros serviços menos relevantes) – estão
baseadas completamente nos recursos providos pelo SQL Server, com o uso intensivo e em larga escala.
Para idéias e tecnologias, gostaria de citar:
- Microsoft Popfly - http://www.popfly.com/
- Microsoft Live Labs : Volta - http://labs.live.com/volta/
- OOXML – Office Open XML
- Windows Live Plataform
- Sharepoint (é claro) – sendo um grande ano de implementações mais complexas e completas. Vejam mais in-
formações em http://www.sharepointbrasil.net

Marcelo Hideaki Azuma (ITGROUP - MS GOLD Certified Partner)


MVP de Arquitetura de Soluções, MCSD, MCSE, MCDBA e MCT.

1. Algo que vem se apresentando é o uso do Application Portfolio Management como parte do ferramen-
tal para gerenciamento da arquitetura corporativa. Muito importante já que o nível de complexidade do conjun-
to de sistemas de uma empresa tende a crescer exponencialmente e o uso de ferramentas deste tipo, como o
Project Portfolio Server da Microsoft, possibilita uma análise estratégica sobre o patrimônio digital da empresa,
auxiliando o arquiteto corporativo na definição do direcionamento tecnológico da empresa, que orienta a reali-
zação de cada projeto de TI.

2. Todo o pacote Office 2007, incluindo o Project Professional, OneNote e Visio, e o Visual Studio 2008
com o Team Foundation Server Explorer. Não pode faltar também o Virtual PC, com vários Virtuais Machines
para manter o meu Data Center móvel.

3. Este ano deve apresentar uma evolução na implementação dos conceitos de Service Oriented Architec-
ture e suas especializações, como Software + Services e Office Business Applications. Vários casos de sucesso
de implementações de Enterprise Service Bus, Business Intelligence, Unified Communications e Portais de Cola-
boração, a Microsoft oferece hoje uma plataforma madura para realização de tais projetos e o mercado também
está mais bem preparado para receber e tirar proveito de tudo isso.
5
Entrevista - Lançamentos 2008
Fabio Câmara Microsoft MVP
Fabio Camara (fabio.camara@vstsrocks.com.br) é MCT, MCP, MCAD, MCPD, MCITP, MCTS, MCSD.NET, MSF
Practitioner, Certified ITIL Foundations e Certified SCRUM Master– Acredita em bons resultados em projetos
com técnicas ágeis, principalmente para as características do mercado brasileiro. Ministra treinamentos e
“coaching” para projetos conforme pode ser verificado no site http://www.fcamara.com.br

1. O Visual Studio Team System tem muitas novidades e posso cometer alguma injustiça em minha avaliação.
Vamos colocar assim: A novidade que eu mais gostei no Visual Studio Team System 2008 foram as novas funcio-
nalidades de Build Automation que permitiram o conceito Continuos Integration.

2. TFS 2008, VSTS 2008, Office 2007, MOSS 2007 e One Note.

3. Na minha previsão, o VSTS vai ganhar destaque porque vai deixar de ser visto como uma ferramenta de
controle de versão e será visto como uma ferramenta de automação de ciclo de vida de desenvolvimento
de software

Alexandre Lopes (Microsoft MCT)


Atua como consultor especialista em SQL Server em projetos da Y2K-TI (http://www.y2k-ti.com.br).
Possui mais de 10 anos de experiência na área de TI, sendo certificado Microsoft com os títulos MCT, MCSE e
MCDBA. Como instrutor MCT (Microsoft Certified Trainer) possui cerca de 4.200 horas ministrando treina-
mento oficial Microsoft.

1) O lançamento do SQL Server 2008 que irá revolucionar o mercado de banco


de dados.
2) O Virtual PC com Windows Server 2008 e SQL Server 2008.
3) A Virtualização de servidores e o outsourcing de serviços deverão ter um
destaque em 2008. Ambos terão destaque por diminuírem o ROI e proporcionarem
maior poder de gerenciamento. O ITIL como framework para entrega de melhores serviços será o grande
destaque na área de outsourcing e help desk.

Israel Aece (Microsoft MVP, MCP, MCAD, MCTS e MCT)


Israel Aéce (Microsoft MVP, MCP, MCAD, MCTS e MCT) é desenvolvedor de software há aproximadamente 5
anos. Desde então utiliza a plataforma .NET da Microsoft, onde desenvolve sobre ela aplicativos voltados para
Internet (ASP.NET), Windows Forms, Windows Services e, principalmente sistema distribuídos, utilizando Visual
Basic .NET ou Visual C# .NET como linguagens.
E-mail: israel@projetando.net | Site: http://www.projetando.net | Blog: http://weblogs.pontonetpt.com/israelaece

1) O ASP.NET não sofreu muitas alterações. As novidades estão naquelas tecnologias e funcionalidades que o
circundam como é o caso do MVC e o IIS 7.0.
2) Visual Studio .NET 2008 + Windows Vista Business + IIS 7.0.
6
Entrevista - Lançamentos 2008
3. Acredito que o MVC roubará a cena nos próximos meses. Isso é devido à grande exigência que a comunida-
de fez para que fosse implementado uma alternativa ao tradicional Web Forms. Claro que, em paralelo, outras
tecnologias vão sendo disponibilizadas (como é o caso das Parallel Extensions) e outras vão amadurecendo cada
vez mais (WCF, WF, WPF e Cardspace), tornando a plataforma .NET cada vez mais completa.

Maira Wenzel
MCSD, é líder de programação do time de Usuários Educacionais de ASP .NET. Vem trabalhando extensivamen-
te com tecnologias Microsoft desde 2000 incluindo SQL Server, ASP.NET, C#, Visual Basic and Sharepoint Ser-
ver.

1) ASP.NET Dynamic Data. É possível conferir esta tecnologia na versão CTP do ASP.NET 3.5 Extensions Pre-
view.
2) Não posso ficar sem o Word, o Outlook e o Visual Studio 2008.
3) Acho que uma tecnologia que vai ter muito destaque em 2008 é o ASP.NET MVC. O ASP.NET MVC é a
implementação da Microsoft utilizando a arquitetura MVC (model-view-controller). Esta arquitetura por
fazer uma divisão de responsabilidades, facilita a manutenção do código, o gerenciamento de complexidade
e o teste das aplicações.

http://shop.linhadecodigo.com.br/treinamento.asp?id=2953
7 Merge com SQL Server 2008

Uma das grandes novidades do SQL Server 2008 é a facilidade para mesclar dados utilizando o conceito de MERGE. Esta operação permite
recuperar dados de uma origem e realizar diversas ações baseadas nos resultados de JOIN (junção) entre a origem e o destino. O MERGE au-
menta consideravelmente o desempenho na utilização de INSERT, UPDATE e DELETE em casos específicos.

A criação de uma condição MERGE é relativamente simples, no me-


lhor caso são apenas quatro passos para sua composição.
MERGE: Especifica os dados de destino da operação definida na
clausula WHEN;

USING: Especificam os dados de origem que serão comparados


com os dados de destino, definido na clausula MERGE;

ON: Encontra os dados em evidência, interligando as condições de


origem e destino;

WHEN: Aumenta a granularidade do filtro, incrementando a clau-


sula ON.

Com alguns exemplos na prática, este recurso fica mais simples de


ser entendido e implementando.
Imagine o seguinte cenário: Em uma rede de lojas, foram criadas
tabelas com nomes diferentes, mas com a mesma estrutura. Cada
tabela armazena os produtos que tem em sua loja (a tabela tblLoja1 armazena os produtos da Loja 1, e a tabela tblLoja2 armazena os produtos da
Loja 2). Em um determinado momento, o dono da rede de lojas solicita que seja feita uma centralização dos dados, para a criação de uma apli-
cação Web.
Com base neste cenário, criamos e populamos as duas tabelas de produtos das lojas.

DECLARE @cont INT


SET @cont = 1
CREATE TABLE tblLoja1 (
lojCodigo int
,proCodigo int
,proDescricao varchar(10))
WHILE @cont <= 20
BEGIN
INSERT INTO tblLoja1

DECLARE @cont INT


CREATE TABLE tblLoja2 ( SET @cont = 15
lojCodigo int
,proCodigo int
,proDescricao varchar(10))

WHILE @cont <= 30


BEGIN
INSERT INTO tblLoja2
8 Merge com SQL Server 2008

Depois de criar e inserir alguns registros em cada uma das duas tabelas separadas das Lojas, vamos criar a tabela tblLojas. Repare que a estru-
tura das 3 tabelas são iguais, isso não é uma regra, é só para simplificar o exemplo. Poderiam ser diferentes, sem problema algum.
Finalmente chegamos ao ponto onde utilizaremos o MERGE para colocar todas as informações na tabela tblLojas, baseada nas tabelas tblLoja1
e tblLoja2.

No primeiro exemplo de MERGE, utilizaremos a tabela tblLojas como sendo o destino dos dados e a tabela tblLojas1 como sendo a origem.
Faremos a ligação das duas tabelas nos baseando na coluna proCodigo [terceira linha]. Quando a clausula ON for satisfatório (verdadeira), o
processamento executará o bloco definido em MATCHED, para resultados cuja clausula ON seja negativa, o SQL Server 2008 executará o
bloco NOT MATCHED.

MERGE tblLojas des


USING tblLoja1 ori
ON ori.proCodigo = des.proCodigo
WHEN NOT MATCHED THEN
INSERT values(ori.lojCodigo, ori.proCodigo, ori.proDescricao)
WHEN MATCHED THEN
UPDATE SET des.lojCodigo = ori.lojCodigo;

Neste momento, como a tabela tblLojas ainda está vazia, somente o bloco NOT MATCHED (que insere os valores) será executado. Con-
sultando a tabela tblLojas, os dados estão idênticos à
MERGE tblLojas des tabela tblLoja1.
USING tblLoja2 ori Agora, para executar o MERGE da tabela tblLoja2 com a
ON ori.proCodigo = des.proCodigo tabela tblLojas, criamos o segundo exemplo de código que é
WHEN MATCHED THEN
muito parecido com o primeiro, a não ser pela tabela utiliza-
UPDATE SET des.proDescricao = 'AmbasLojas'
da como origem dos dados e pelos processamentos que se-
WHEN NOT MATCHED THEN
rão executados com base no resultado da clausula ON.
Agora, depois de executar esse código que, quando encontra
proCodigo que existe na tabela tblLojas e também existem na tabela tblLoja2, atualiza a proDescricao para „AmbasLojas‟, consultar a tabela tblLojas, consegui-
mos ver com clareza que alguns dados foram inseridos e outros dados atualizados.
SELECT * FROM tblLojas

Na hora que populamos as tabelas das lojas, os produtos de código 15 a 20 se repetiram propositalmente, para forçar esta
igualdade de dados, e como está no exemplo, atualizar a tabela destino.
Concluímos que utilizar o MERGE é mais rápido e simples do que escrever código para fazer uma junção de dados de duas
tabelas. Esta nova funcionalidade deve ser utilizada sempre que possível. Ela é muito mais performática do que criar um
procedimento fazendo as verificações manualmente.

Diego Nogare é Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvi-
mento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Micro-
soft Student Partners (MSP) de São Paulo, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Micro-
soft, Codificando .NET e INETA BR, mantém o site www.diegonogare.net.
9 Artigo: Eu uso metodologia ágil, e você?
Como vender a utilização de metodologias ágeis em projetos para organizações tipicamente tradicionais? Diferente de ou-
tros assuntos técnicos que beiram questões religiosas (ver discussões entre Java e .Net), há nos diretores e gerentes das
corporações uma prudência racional que independe de metodologia. Na verdade, todo gestor sensato quer avidamente três
premissas realizadas em seus projetos: o negócio atendido, o orçamento respeitado e o cliente satisfeito (não necessaria-
mente nesta ordem).

Um caso prático
Iniciamos a reunião na grande sala, muito luxuosa para os padrões que estamos acostumados a trabalhar. Havia cerca de três
empresas representadas na sala e aparentemente todas na mesma situação.
Um diretor de TI de uma respeitável organização me perguntou:
O que está acontecendo com os projetos hoje?
Simples, a TI é lenta demais e os negócios são muito rápidos – ele mesmo respondeu. Isso tem 10 anos no máximo e seu
surgimento confunde-se com a utilização da Internet, mas é a dura realidade atual dos projetos de software.
Seu papel hoje nesta reunião é me fazer compreender o motivo pelo qual eu permitiria você implantar suas técnicas ágeis
em meu departamento de TI, me disse o diretor com verdadeiro desdém. E continuou falando: Argumentos relacionados
com o controle do sucesso do projeto, principalmente do ponto de vista financeiro, são argumentos inválidos se comparar-
mos técnicas ágeis de controle e técnicas baseadas em PMBok. Portanto seja mais criativo que isto!
Ele passou ainda uns 30 minutos expondo toda sua descrença, eu até pensei que a reunião acabaria e eu não teria chance de
falar. Abruptamente ele cala-se e olha para mim. Entendi imediatamente que chegou minha vez. Cerca de 8 pessoas caladas
numa mesa oval esperando um argumento mágico vindo de mim.

Colhendo a motivação
Comecei trazendo novas questões, não que eu quisesse ganhar tempo para estruturar os meus argumentos, mas eu precisa-
va entender porque este diretor com a opinião contra metodologias ágeis resolveu me receber numa reunião. Eu simples-
mente queria entender o que estávamos fazendo ali naquela sala de reunião luxuosa.
Parece-me que os problemas foram bem explanados, contudo não consegui captar a motivação. Qual a motivação de vocês
para buscar mudanças? Entendi que não estão plenamente satisfeitos com as técnicas que utilizam hoje, entretanto percebi
que estão acostumados com as técnicas e acomodados com os resultados alcançados. Sendo assim, para que conhecer pos-
sibilidades diferentes de técnicas e conseqüentemente de resultados?
O diretor imediatamente questionou-me em tom mais alto ao invés de responder: _ Você está afirmando que estamos aco-
modados? Minha resposta politicamente inadequada foi:
Independentemente de classificar se há ou não há “zona de conforto”, quero apresentar a minha leitura sobre o significado
da palavra insanidade. Insanidade para mim é esperar por resultados diferentes sem fazer nada diferente. Há alguns anos se
praticam as mesmas técnicas, como podemos esperar resultados diferentes?
Aonde você quer chegar? Retrucou o diretor irritado.
Quero encontrar a motivação! Respondi sem mostrar intimidação. As propostas ágeis são tão sérias como todas as propos-
tas de metodologias que você conhece, portanto se não há motivação para mudanças e o objetivo é apenas comparar uma
técnica com outra, avise-me, pois trilharei por caminhos mais teóricos neste caso.
Neste momento eu sabia que a reunião iria longe, porém eu precisava “recuperar” o diretor. Procuro uma resposta simples,
a mais simples que vier em sua mente agora, por favor, me responda o que estamos fazendo aqui agora.
Meu cliente não está se sentindo bem atendido! Escapuliu da boca do diretor. Muito obrigado, eu respondi em cima.
10 Artigo: Eu uso metodologia ágil, e você?
Obtendo o cenário
A organização de nosso departamento de TI é formada por três sub-áreas: uma espécie de escritório de projetos, uma área
de qualidade e a área de desenvolvimento propriamente dita. Obviamente temos pessoas de infra-estrutura que também são
responsáveis pelos ambientes de desenvolvimento, testes e produção.
Com este cenário procuramos ter controle de todas as atividades, porém mesmo assim vivemos um dilema: _ se atendemos
aos pedidos dos usuários após o escopo definido, perdemos o controle sobre o orçamento e prorrogamos o prazo; _ se
congelamos o escopo previamente definido, apesar de entregar com o orçamento previsto e no prazo combinado, nossos
clientes afirmam que não foram atendidos.
Afinal, o que podemos fazer diferente? Perguntou o diretor em tom mais amigável.

Explicando os motivos
Vejo muito naturalmente em seu cenário o conflito de atividades de controle, também chamadas atividades de conformida-
de, com atividades de resultado. Apesar de ser um problema comum, não há literatura acessível ou cursos que orientem a
compreensão e resolução deste conflito.
As atividades de controle focam em corrigir desvios e não no aprendizado, ou seja, partem do principio que o plano sempre
tem que ser perfeito. Se o plano inicial precisa ser alterado, refaz-se imediatamente todo o plano. Isto explica também por-
que os técnicos não gostam quando os usuários pedem mudanças, pois é muito trabalho seja lá qual for o tamanho da mu-
dança.
Quando afirmo que não há aprendizado neste cenário, caracterizo assim porque ninguém se propõe a entender o porquê do
novo pedido do usuário ou da mudança sobre algo previamente combinado. É uma atitude binária, “sim” vamos fazer e o
impacto será revelado posteriormente ou “não” podemos, pois o impacto será fatal ao projeto.
Deve haver uma razão para tantas mudanças ou para inúmeros pedidos novos, quando vamos nos responsabilizar em com-
preender isso e transformar nossa atitude?
O controle de qualidade, da forma automatizada que vocês usam, consome uma enormidade de tempo. Este tempo extra
com qualidade, além de consumir mais atividades de conformidade, também são muito questionadas pelos “sponsors1” dos
projetos.
A mistura de atividades de controle e atividades de qualidade no seu cenário criam um efeito “bola de neve” em seus proje-
tos. Nestes projetos com problemas, vocês aumentam a prioridade das atividades de conformidade na tentativa de retomar
o plano perfeito ao invés de aumentar o foco nas atividades de resultado. Vocês aumentam os testes acreditando que a ins-
peção é a melhor forma de proteger-se da decepção do cliente. No fim, mesmo tendo trabalhado arduamente durante todo
o projeto, há uma sensação em todos de que não foi legal.
1 Sponsors: são executivos e / ou clientes que aprovam o orçamento do projeto e são responsáveis pelo pagamento .

Uma direção diferente


É necessário quebrar o paradigma de replicabilidade e adotar o paradigma da confiabilidade.
• Replicabilidade: entradas e saídas planejadas inicialmente e com pouca variação;
• Confiabilidade: foco na saída, flexibilidade na entrada e aproximação do cliente.
Muitas metodologias propõem uma espécie de framework para encaixotar o relacionamento com clientes e desenvolvedo-
res como se fossem robôs. Os seres humanos são dotados de uma fantástica criatividade capaz de surpreender, sempre.
“Robotizar” o comportamento de nossos clientes e desenvolvedores é transformar a expectativa de um projeto soluciona-
dor para o negócio na monotonia de mais um sistema de software .
Se você não confia em seu cliente e na sua equipe de desenvolvimento, porque está iniciando este projeto?
Se o cliente não é confiável, use de prototipação e entregas freqüentes de código funcionado, se possível em intervalos de 2 semanas.
11 Artigo: Eu uso metodologia ágil, e você?
Se a equipe não é confiável, estabeleça estimativas junto com eles, ou seja, todos participam da medição do projeto. Faça reuniões diárias
em pé, de aproximadamente 15 minutos, respondendo as seguintes perguntas:

1. O que nós conseguimos fazer ontem?


2. O que nós iremos fazer hoje?
3. O que pode nos impedir alcançar nosso objetivo?

Classifique e priorize as atividades junto com seu cliente, deixando atividades de menor valor para o final de projeto. É quase que afirmar:
faça do mais difícil para o mais fácil.
Desta forma, novos requisitos podem ser trocados por requisitos de menor valor que seriam desenvolvidos mais para o final do projeto.
Nos testes, pense que automação é muito bom para garantir que determinados comportamentos do software não sejam perdidos diante as
alterações. Na fase de construção, isso não tem tanto valor. Recomendo aplicar técnicas baseadas em “testes comportamentais2” durante
esta fase, pois são mais simples, mais econômicas e eficientes.
Pratique isso por 3 meses e avalie os resultados.

A receita final
Mesmo entendendo que muitos executivos querem simplesmente comprar uma metodologia como um segredo mágico, fala-se a palavra
certa e tudo funciona, não constatamos isso em nosso mundo real.
Metodologia não se compra, se implanta. Depende dos próprios executivos, dos gerentes de projetos e principalmente do fator humano
presente. Entenda-se por fator humano o respeito à intuição criativa dos clientes e desenvolvedores.
Temos comprovado que quando se trabalha sério com propostas de mudanças e motivação na equipe, com três meses já alcançamos resul-
tados diferentes. Para a autonomia técnica plena da equipe pode ser necessário mais tempo, entretanto quando sponsors percebem pro-
gresso, qualquer investimento se justifica e tudo fica mais fácil.
A participação de um consultor externo fora da dinâmica dos projetos existentes tem se demonstrado um acelerador providencial. Apenas
recomendamos cuidado para ratificar o conhecimento prático deste profissional, pois implantar ciclo de vida de desenvolvimento é 2 Tes-
tes Comportamentais ou Behavioral Tests: Técnicas de testes baseadas na interação do ser humano com os produtos desenvolvidos. Des-
taca-se pela facilidade de implantação e pelo baixo investimento. Para saber mais visite o site http://www.fcamara.com.br
Sempre bem mais profundo que as teorias podem alcançar. A melhor forma de se certificar sobre o consultor é verificando seu histórico
de realizações.
Resumindo conclusivamente, é necessário entender a diferença entre risco e atividade.
Quando você cadastra uma atividade em seu aplicativo específico de controle de atividades, você espera uma tarefa detalhada e um produ-
to resultante desta atividade associado.
Quando você cadastra um risco no mesmo aplicativo, o que fazer? Todo risco impõe uma mudança de atitude para que resultados diferen-
tes aconteçam.

Sucesso em seus projetos!

Fabio Camara (fabio.camara@vstsrocks.com.br) é MCT, MCP, MCAD, MCPD, MCITP, MCTS, MCSD.NET, MSF Practitioner, Certified
ITIL Foundations e Certified SCRUM Master– Acredita em bons resultados em projetos com técnicas ágeis, principalmente para as carac-
terísticas do mercado brasileiro. Ministra treinamentos e “coaching” para projetos conforme pode ser verificado no site http://
www.fcamara.com.br
12 Por dentro da Base Class Library

O MVP de Asp.Net Israel Aéce disponibilizou em seu site Projetando .Net (www.projetando.net) um material fantástico sobre Base Class Li-
brary. Veja uma pequena parte deste material neste artigo e faça o download totalmente grátis dos capítulos.

Link para download: http://www.projetando.net/Sections/ViewArticle.aspx?ArticleID=77

A Base Classe Library (também conhecida como BCL) é um conjunto de classes que o .NET disponibiliza para todas as linguagens que rodam
sob o .NET Framework. Essa base encapsula várias funcionalidades que tornam o trabalho do desenvolvedor muito mais fácil. As classes conti-
das dentro da BCL são comuns para qualquer tipo de aplicação, ou seja, independentemente de tecnologia (ASP.NET, Windows Forms, WPF,
etc.), você poderá consumir essas classes que, representam tarefas que são comumente utilizadas. A imagem abaixo exibe onde a BCL está
encaixada dentro da plataforma .NET.
A versão 2.0 adicionou novos tipos e namespaces, enriquecendo ainda mais esta estrutura. Essas classes vão desde novas coleções (tipadas) até
novos namespaces, como é o caso do System.Transactions. Apesar do .NET Framework estar em sua versão 3.5, ele utiliza o .NET 2.0 como seu
núcleo. A figura abaixo ilustra perfeitamente a posição do .NET 2.0 dentro do .NET 3.X.
A BCL é composta por vários namespaces e, através dos capítulos abaixo, veremos detalhadamente cada um dos principais deles. A idéia é
abordar o conteúdo mais útil ao dia-a-dia, mostrando exemplos em Visual Basic .NET e Visual C#. Sendo assim, nem todas as classes/
funcionalidades serão cobertas aqui, mas, para isso, poderá recorrer ao MSDN Library.

Conteúdo
Capítulo 1 – Tipos de dados e Interfaces
Este capítulo abordará a arquitetura de tipos fornecido pelo .NET Framework, onde na primeira parte do capítulo, será abordado os tipos pa-
drões e veremos como identificar se trata-se de um tipo valor ou referência. Além disso, analisaremos um problema grave, deixado de lado
por muitos desenvolvedores, que é a questão do boxing e unboxing. Ainda nessa primeira parte, analisaremos alguns novos tipos introduzidos
nesta versão do .NET Framework, em principal, os Generics. Na segunda e última parte do mesmo, vamos abordar as várias Interfaces que estão
disponíveis para serem implementados em tipos customizados, fornecendo funcionalidades adicionais ao tipo criado.
Capítulo 2 – Trabalhando com Coleções
As coleções são componentes importantes em qualquer tipo de aplicação e, para isso, esse capítulo abordará extensamente o
uso das mesmas, começando pelas coleções primárias, fornecidas desde as primeiras versões do .NET Framework até as novas
coleções, introduzidas na versão 2.0 do .NET Framework, quais fazem uso dos Generics. Além das coleções, analisaremos as
Interfaces disponíveis para podermos estender as funcionalidades existentes e customizarmos para o nosso cenário.
Capítulo 3 – Utilização de Assemblies.
Um Assembly é a menor unidade de reutilização, segurança e controle de versão. O Assembly é algo importante que deve ser
analisado cuidadosamente, pois toda aplicação .NET depois de compilada gerará um Assembly. Este capítulo abordará a sua cri-
ação desde um utilitário de linha de comando até o Visual Studio .NET. Além disso, abordaremos também outros assuntos rela-
cionados a Assemblies, como por exemplo, strong names, GAC (Global Assembly Cache), instaladores e arquivos de configura-
ção.
Capítulo 4 – Monitoramento e depuração de aplicações
Toda e qualquer aplicação necessita de algum tipo de monitoramento de seu código para detectar possíveis problemas que pos-
sam acontecer e que devem ser analisados. O .NET Framework fornece várias classes que ajudam nesse monitoramento e, este
capítulo, é responsável por apresentar essas classes que vão desde a manipulação do Event Log do Windows até classes que
interagem com o WMI - Windows Management Instrumentation.
Capítulo 5 – Manipulando o sistema de arquivos
Grande parte das aplicações comerciais que temos atualmente manipulam arquivos. Esses arquivos são arquivos de bancos, ar-
quivos de parceiros e fornecedores que servem para troca de informações. Enquanto os XML Web Services ainda não são uma
realidade para muitas empresas, a manipulação de arquivos e seus respectivos conteúdos são ainda muito utilizados. Tendo esse
cenário, o capítulo em questão abordará as principais classes contidas dentro do namespace System.IO para exem-
13 Por dentro da Base Class Library

Capítulo 6 – Serialização
A serialização de dados é cada dia mais utilizada em aplicações. Por mais que isso aconteça nos bastidores, esse capítulo abordará desde o seu
conceito até como implementá-la; e ainda, em seus diversos formatos, utilizando as classes fornecidas pelo .NET Framework 2.0. Além disso,
analisaremos classes e Interfaces que temos disponíveis, que proporcionaram o processo de serialização e deserialização mais flexível, onde
podemos customizar e interceptar cada um desses processos de acordo com a nossa necessidade.

Capítulo 7 – Globalização de Aplicações


Cada vez mais se desenvolve softwares que podem ser acessados por várias pessoas de diferentes idiomas e de diferentes locais do mundo.
Tendo esse cenário, é importante que a aplicação que estamos desenvolvendo seja possível ao usuário poder customizar o idioma que deseja
visualizar os dados e ainda, poder criar a aplicação independente de qualquer cultura. Esse capítulo tem justamente essa finalidade, ou seja, de
exibir o que o .NET Framework é capaz de fazer para atender essa necessidade que, torna-se cada vez mais comum.

Capítulo 8 – Criptografia
Criptografia de dados é um ponto muito importante, nos mais diversos tipos de aplicações. Geralmente, em aplicações onde alguns dos dados
são muito sigilosos, como é o caso de aplicações financeiras, quais mantêm os dados de seus clientes, é necessário que se mantenha esses
dados seguros, pois, se esses dados caírem em mãos erradas, essas pessoas com más intenções, não consigam entender e/ou recuperar esses
dados em sua forma legível. Esse capítulo abordará extensamente as classes responsáveis por criptografia e hashing que o .NET Framework
disponibiliza, bem como utilizá-las e como aplicá-las ao dia-a-dia.

Capítulo 9 – Utilizando Code Access Security – CAS


Toda aplicação que utiliza o Common Language Runtime (CLR) obrigatoriamente deve interagir com o sistema de segurança do mesmo. Quando
a aplicação é executada, automaticamente é avaliado se ela tem ou não determinados privilégios. Dependendo das permissões que a aplicação
tem, ela poderá rodar perfeitamente ou gerar erros relacionados a segurança. Code Access Security (também conhecido como CAS) é um meca-
nismo que ajuda limitar/conceder o acesso que o código que está querendo realizar, protegendo recursos e operações. Este capítulo abordará
como utilizar o CAS, que é fornecido juntamente com o SDK do .NET Framework e, como configurar devidamente a aplicação para evitar proble-
mas relacionados a segurança.

Capítulo 10 – Envio de Mensagens (E-mails)


Envio de e-mails é muito comum em qualquer tipo de aplicação, seja ela uma aplicação para internet, uma aplicação para Windows ou até mes-
mo serviços que rodam sem uma intervenção do usuário. O .NET Framework fornece um namespace contendo classes e muitos outros tipos que
podemos utilizar nas aplicação para habilitar o envio de e-mails e, conseqüentemente, torná-las muito mais dinâmicas e inteligentes.

Capítulo 11 – Criando Serviços do Windows


Os Serviços do Windows (Windows Services), permitem-nos criar aplicações que rodam em “background” no sistema operacional. Estes serviços
podem ser automaticamente inicializados quando o sistema operacional inicializar, podendo ainda ser pausado e reinicializado, sem apresentar
nenhuma interface com o usuário. Esses serviços são ideais para ser usado em servidores ou em funcionalidades de longa duração que necessi-
tem ser executadas de forma totalmente independente, sem a intervenção de um usuário. O capítulo corrente abordará desde a sua criação, de-
puração e instalação do mesmo.

Capítulo 12 – Interoperabilidade com componentes COM


A Microsoft criou a plataforma .NET e, em pouco tempo, essa plataforma foi adotada por muitas e muitas empresas. Algo importante é que muitas
dessas empresas, já tinham componentes COM que eram utilizados em massa nas aplicações e que são inviáveis para serem reescritos imedia-
tamente. Felizmente a Microsoft pensou no legado e possibilita a interoperabilidade de componentes COM, interagindo com aplicações baseadas
na plataforma .NET e vice-versa. Este capítulo mostrará os passos necessários para efetuar essa interoperabilidade entre as novas aplicações e
o que já existe em código legado.

Capítulo 13 – Reflection
Reflection é a habilidade de extrair informações de metadados de um determinado tipo, ou seja, quais parâmetros, métodos, entre outros mem-
bros um determinado tipo possui. Isso torna a aplicação bastante flexível, onde podemos extrair informações necessárias para podermos custo-
mizar e automatizar a criação de ferramentas e utilitários que auxiliam os próprios desenvolvedores. Além disso, permite a criação em runtime de
Assemblies e como instanciar classes via programação. Esse capítulo propõe-se a explicar como criar esse tipo de funcionalidade dentro da apli-
cação.

Israel Aece (Microsoft MVP, MCP, MCAD, MCTS e MCT)


É desenvolvedor de software há aproximadamente 5 anos. Desde então utiliza a plataforma .NET da Microsoft, onde desenvolve sobre ela
aplicativos voltados para Internet (ASP.NET), Windows Forms, Windows Services e, principalmente sistema distribuídos, utilizando Visual
Basic .NET ou Visual C# .NET como linguagens.
14
Gerenciando Transações com Trasaction Scope no Asp.Net 2.0
Introdução
Neste artigo vou explicar como utilizar o Transaction Scope, que é uma ferramenta que pode ajudar muito no controle de
transações de sua aplicação. Também vou mostrar a configuração que deverá ser feita nos servidores para que ele possa
funcionar adequadamente, pois muitas pessoas se esquecem deste passo e acabam tendo inúmeros problemas na implemen-
tação da funcionalidade em produção ou mesmo no ambiente de teste e desenvolvimento.
O TransactionScope
O .NET Framework 2.0 inclui o namespace System.Transactions que dá um grande suporte a transações distribuídas geren-
ciadas pelo Transaction Manager, incluindo Banco de Dados e Serviços de Mensagens(message queues).
O namespace System.Transactions define a classe TransactionScope, que cria e gerencia transações distribuídas.
Devido a sua facilidade de utilização e eficiência, é recomendado que você utilize a classe de TransactionScope para facilitar o
controle de transações em sua aplicação, sem que seja necessário (você precise) interagir com a operação propriamente
dita.
O TransactionScope pode selecionar e gerenciar o ambiente de Transações automaticamente.
O System.Transactions fornece uma estrutura de transações totalmente integrada ao .NET Framework, mas não se limitando
ao ADO.NET.

Utilizando o TransactionScope
O TransactionScope é iniciado quando se cria um novo objeto TransactionScope.
É altamente recomendado que a declaração do scope seja feito dentro da diretiva using, pois ela garante que o objeto dure
somente o tempo necessário para sua utilização.
Vamos aos exemplos:
Adicione a referência no projeto ao System.Transaction.

Inclua a referencia na Classe:

Incluindo o TransactionScope no Bloco de Codigo:


15
Gerenciando Transações com Trasaction Scope no Asp.Net 2.0
Completando a transação:
Para “commitar” a transação inserimos uma instrução que será a ultima linha do using.

Obs: Caso ocorra algum problema na execução do bloco de código (dentro do using ) automaticamente a transação é abor-
tada e o Transaction Maneger executa o Roll Back das alterações.

RollBack:

O RollBack é executado automaticamente quando ocorrer qualquer exceção no bloco que está sendo executado dentro da
transação.

Exemplo de utilização:

No cenário abaixo, temos uma transação onde gravamos informações coletadas separadamente (endereço, dados pessoais,
etc). Com o Transaction Scope temos a liberdade de gravar as informações separadamente. Suponhamos que estamos gravan-
do o cliente e após gravar o Endereço e o Telefone do Cliente da um problema na gravação dos Dados pessoais do mesmo
sendo assim o transactionScope faz o Roll Back de tudo! Voltando o objeto ao seu estado original.
16
Gerenciando Transações com Trasaction Scope no Asp.Net 2.0
17
Gerenciando Transações com Trasaction Scope no Asp.Net 2.0

Caso ocorra algum erro durante a gravação de algum desses metodos o TrasactionScope faz o RollBack de tudo, como dito
anteriormente. Não havendo nenhum problema a transação é completada normalmente.

A configuração do ambiente

Para que o transactionScope funcione no servidor precisamos fazer algumas configurações, mais somente se o servidor for XP
sp2 pra cima! Em Win2000 não precisamos mexer em nada!

Menu Iniciar/Configurações/Painel de Controle/Ferramentas administrativas.

Abra o Serviço de Componentes (como na figura abaixo):


18
Gerenciando Transações com Trasaction Scope no Asp.Net 2.0

Clique com o botão direito do Mouse em Meu Computador(Como na


figura Abaixo) e selecione a opção Propriedades.

Na janela Clique na aba MSDTC e depois em Configurações de Segurança.


19
Gerenciando Transações com Trasaction Scope no Asp.Net 2.0
Habilite as opções:

- Acesso ao DTC de Rede.


- Permitir Clientes Remotos
- Permitir Administração Remota
- Permitir Entrada
- Permitir Saída
- Nenhuma Autenticação Necessária
- Permitir Transações do Protocolo TIP
- Habilitar Transações XA (como a figura abaixo)

Lembrando que essa configuração só deve ser feita em ambientes com sistema operacional Win XP ou Win Server2003. E a
mesma deve ser feita tanto no servidor de WEB quanto no de Banco de Dados.

Espero que este artigo contribua com o seu crescimento.

Abraço e bons projetos 

Fabiano Belmonte
Senior Architect da Saraiva.COM, especialista em aplicações e-Business com larga experiência em B2B (Submarino.Com, Ame-
ricanas.Com e Saraiva.Com). Trabalha há 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas áreas: institui-
ções financeiras (sistema SPB), e-Commerce, gerenciamento logístico, entre outras.
RECORDAR É VIVER!
21 2º XNA Challenge e uma História de Sucesso

A Microsoft Brasil promove diversas competições e eventos sobre suas ferramentas e tecnologias durante todos os anos. Profissionais de TI e
estudantes de todo o Brasil participam massivamente nestes eventos, em busca de mais conhecimento e oportunidades para a carreira. Neste
contexto, no final de 2006 foi anunciado o primeiro XNA Challenge que recebeu dezenas de projetos inscritos e teve a participação de cente-
nas de pessoas na final em Fevereiro de 2007. Toda a repercussão marcou no país a data em que uma multidão de programadores (mesmo os
mais iniciantes) começaram a desenvolver jogos sob uma tecnologia nova chamada XNA.

O XNA é um framework que permite aos programadores produzir um jogo mais rápido ao utilizar um ambiente orientado aos jogos com
métodos e controles especiais. Baseado na linguagem de programação chamada C#, o XNA configura-se como uma extensão ao Visual Studio,
mesmo o Express Edition. Atualmente está na versão 2.0 e já existem expectativas e boatos sobre sua próxima versão, a 3.0.

Como tudo que é bom, a gente pede bis. E eles atendem! Anunciado no segundo semestre de 2007, o 2o. XNA Challenge teve o tema "Meio
Ambiente Sustentável", diretamente ligado a Imagine Cup '08, que definiu o challenge como um trampolim para a competição internacional já
que em 2008 haveria uma nova categoria, a Game Development. Tudo definido, tempo passando e diversos competidores programando.

Dos projetos submetidos, os cinco melhores foram selecionados para participar de uma final em São Paulo aberta ao público que iria definir o
campeão, o segundo e o terceiro (além de um prêmio adicional, de maior indicação do público presente). Dos finalistas, dois projetos são
Grupo de Projeto e Desenvolvimento de Jogos (GPDJ) da Unicamp, que comentarei mais a respeito.

Voltando ao challenge, a criatividade rolou solta. Bruno Evangelista (UFMG) criou "Alice, os Parasitas e o Livro do Tempo" em que o jogador
encarna uma menina com poderes especiais para salvar o planeta de seres malignos. Da Unesp, Guilherme Campos apareceu com "City Rain",
um jogo a lá Sim City em que o jogador constrói uma cidade na posição de prefeito e aprende sobre ecologia e urbanismo. Outro competidor,
José Lourenço (UNIVAP), participou com "Great Adventures of Ted" onde você precisa juntar os cristais e combater o vilão Shredder.

Carolina Gomes (GPDJ/Unicamp) desenvolveu "Gariman" em que ela definiu: "o jogador encarna um simpático lixeiro que tem como ambição
ser aprovado como membro dos Gariman, o esquadrão de elite que viaja pelo mundo a limpar cidades". O game foi desenvolvido em uma
equipe maior incluindo Thiago Coser, André Esteve e Lucas Bueno, todos integrantes do GPDJ da Unicamp, e o objetivo final é a conquista na
França da Imagine Cup '08.
22 2º XNA Challenge e uma História de Sucesso

Por fim, o último competidor e campeão do torneio foi Vítor Antoniolli (GPDJ/Unicamp) com o game "Recicle" em que a missão é despoluir
um rio coletando corretamente os lixos recicláveis. Recicle foi desenvolvido por Vítor Antoniolli e Zhenlei Ji, com participação de Fábio Reis,
todos do GPDJ da Unicamp. Além do prêmio do júri o game também levou o prêmio adicional decidido pelo público do evento.

A esta altura você deve estar se perguntando de onde saiu esse grupo de jogos da Unicamp chamado GPDJ. Pois bem, contarei sobre a histó-
ria do grupo e o sucesso que felizmente obtivemos no mundo dos games, ao menos até o momento. Antes, devo me apresentar: atuo como
coordenador do grupo. O GPDJ formou-se de uma iniciativa de dois professores do Instituto de Computação da Unicamp, em que eles pro-
curavam alunos para desenvolver um teste na férias. Por causa do período, somente 4 alunos deixaram as férias de lado para 15 dias de pro-
gramação e dessa experiência nasceu o iCoco (vice-campeão SBGames 2007). No projeto iCoco atuei já como coordenador, ajudando os
alunos nos entraves mas não durante toda a programação.

Em seguida, mais alunos aderiram ao grupo e iniciou-se o projeto Gariman, em Agosto. Como alguns dos alunos não estavam diretamente
ligados com o projeto Gariman, em Dezembro eles começaram a produção do Recicle pensando diretamente no 2o. XNA Challenge. Feliz-
mente, como mencionado, ambos foram selecionados entre os 5 finalistas (40%). Em seguida, ambos os projetos foram submetidos (com mo-
dificações) para a Imagine Cup '08 e dos 8 projetos brasileiros aceitos para o Round 2 dois são do GPDJ (25%).

Tamanho sucesso rendeu ao grupo e integrantes notícias em jornais e na internet, além de


entrevistas. Como já conversei com amigos a respeito e nem sempre o retorno é rápido
para outros grupos, pensei em montar uma fórmula mágica. A mais próxima que cheguei
foi: junte programadores interessados e motivados (mesmo sem receber nada, e sem sa-
ber o que pode acontecer no futuro) e adicione artistas e modeladores experientes
(crucial no caso do GPDJ). Por fim, se alguém desejar ajudar em outras questões como
publicidade e testes, não deixe de fora.

Mais detalhes do grupo, acesse http://www.lms.ic.unicamp.br/grupo.jogos

Bruno Melo (brunoamelo@gmail.com) é graduando em Engenharia de Computação na Universidade Estadual de Campinas (Unicamp). Mi-
crosoft Student Partner, campeão nacional 2º. XNA Challenge, coordenador do Grupo de Projeto e Desenvolvimento de Jogos da Unicamp e
desenvolvedor do Microsoft Innovation Center/Interop.
23 Programa MSP – Microsoft Student Partners

Pelo contrário do que muitas pessoas pensam; participar de programas patrocinados pela Microsoft não exige que você venda sua alma ao
diabo, muito pelo contrário, diversos programas incentivam e impulsionam muitas decisões do nosso futuro sem cobrar nada por isso. Dois
exemplos bem reais destes programas são MVP [Microsoft Most Valuable Professional] e MSP [Microsoft Student Partners]. Ambos os progra-
mas visam incentivar as pessoas que de uma forma direta ou indireta ajudam outras pessoas a aprender alguma tecnologia da Microsoft. O
programa MVP é voltado aos profissionais do mercado de trabalho que se destacam nas comunidades de tecnologias. Os profissionais que
cedem um pouco de seu tempo para ajudar a outras pessoas tirando dúvidas, dando treinamentos, cursos, palestras, escrevendo artigos, tem
chance de conseguir um titulo de MVP. O responsável pelo programa na América Latina é o brasileiro Leonardo Tolomelli, que por sinal nos
cedeu uma entrevista na edição 0 – Junho/2007.

Já o programa MSP é voltado exclusivamente para estudantes, não importa se é de nível médio ou de doutorado, para ser um MSP tem que
ser estudante. O ingresso para o programa é mediante indicações e tarefas que são realizadas em universidades ou escolas, com o intuito de
divulgar tecnologias aos estudantes interessados. A base do programa é explorar os talentos dos alunos, fazendo-os crescer pessoal e profis-
sionalmente. Cada MSP é atrelado a uma instituição de ensino, e deve apresentar à Microsoft comprovante de rendimento nos estudos, além
de divulgar as tecnologias a outros estudantes através de palestras, workshops, cursos, e quaisquer outros eventos que possam levar conheci-
mento a estes estudantes.

A maioria dos MSPs é ou foi líder de célula acadêmica. As células acadêmicas são os nomes dos grupos de estudantes que se unem com o
intuito de estudar, aprender e divulgar alguma ou várias tecnologias Microsoft, seja na parte de Desenvolvimento de Software ou em Infra-
Estrutura de TI. Uma célula acadêmica é apoiada pela Microsoft, que fornece material para que os alunos que participam da célula possam a-
prender aquela tecnologia e que consiga empregá-la no mercado de trabalho. Ainda na área acadêmica, o programa Imagine Cup é a maior e
mais completa competição de tecnologia do mundo, revelando diversos [talentos] alunos de destaque ao redor do mundo que conseguem
chances para ingressar profissionalmente na Microsoft. Contando com competidores de mais de 100 países e de nove categorias diferentes, a
Imagine Cup a cada ano aborda um tema atual e de grande importância para o planeta. O Brasil tem nome de peso na competição, e sempre
volta como um dos campeões em alguma categoria. Em 2007 a final da competição foi na Coréia, este ano será na França. Além da viagem,
hospedagem, alimentação e passeio turístico, gratuito a todos os competidores que forem pra final, dependendo da categoria competida, a
equipe ganhadora ainda ganha uma bolada de US$25.000 (isso mesmo, 25 mil dólares!). Em 2007, na categoria de Software Embarcado, a equi-
pe “TriventDreams ED” ganhou em primeiro lugar, e a equipe “Papapaçoca” conseguiu o terceiro lugar na categoria de Filme de Curta Metra-
gem, ambas equipes possuíam MSPs em seu elenco. No Brasil, a área acadêmica é representada por Amintas Neto e sua equipe que com muita
colaboração, responsabilidade e bom humor nos ajudam a estabelecer uma base acadêmica nas universidades do país.

Para mais detalhes sobre os programas acadêmicos da Microsoft,


acesse: http://www.microsoft.com/brasil/educacao/

Diego Nogare é Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvi-
mento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Micro-
soft Student Partners (MSP) de São Paulo, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Micro-
soft, Codificando .NET e INETA BR, mantém o site www.diegonogare.net.
24 Coluna: Desvendando o SQL Server
Pessoal, nesta série de artigos para a revista Codificando e-Magazine, estou demonstrando o uso de XML com SQL Server 2005.
Os seguintes tópicos estarão sendo abordados:

Dados XML e tecnologia SQL Server


Modificando dados XML
Criando Índices XML

Dados XML e Tecnologia SQL Server


O SQL Server 2005 oferece diversas opções para consultar dados XML. Possui um modo extremamente fácil de usar SELECT
SQL SERVER

com FOR XML nas consultas desenvolvidas em Transact-SQL (disponível também na versão 2000 do SQL Server).
FOR XML converte o resultado do SELECT em estrutura XML e apresenta diversos modos de apresentação: RAW, AUTO,
PATH e EXPLICITY

Modo de apresentação FOR XML RAW:


Default para o FOR XML, este modo cria um novo elemento XML identificado como <row> para cada linha no resultado apre-
sentado. Um atributo XML é adicionado ao elemento <row> para cada coluna no SELECT, usando o nome da coluna como
nome do atributo.

Modo de apresentação FOR XML AUTO:


Para cada tabela especificada no SELECT, FOR XML AUTO cria um novo nível na estrutura XML. A ordem de aninhamento dos
dados XML é baseado na ordem das colunas como foram declaradas na cláusula SELECT.

Modo de apresentação FOR XML PATH:


Novo no SQL Server 2005; os desenvolvedores possuem controle total sobre como a estrutura XML é gerada. Cada coluna é
configurada de forma independente, permitindo a utilização de ALIAS (se a coluna não receber um ALIAS, o default <row> é
usado da mesma forma como em FOR XML RAW).

Modo de apresentação FOR XML EXPLICIT:


Fornece a melhor opção para os desenvolvedores controlarem a geração de complexas estruturas XML, os desenvolvedores
possuem controle total sobre o número de níveis que a estrutura XML possui.

Agora, iremos praticar, usando o banco de dados criado anteriormente no segundo artigo da coluna “Desvendando o SQL Ser-
ver”.
Exemplos:

USE CodificandoXML
GO
--- 1. exemplo basico de FOR XML RAW
select * from UniversalLog FOR XML RAW
--- 2. exemplo basico de FOR XML AUTO
select * from UniversalLog FOR XML AUTO
--- 3. exemplo basico de FOR XML PATH
select * from UniversalLog FOR XML PATH
--- 4. exemplo basico de FOR XML EXPLICIT
select * from UniversalLog FOR XML EXPLICIT
25 Coluna: Desvendando o SQL Server
Suporte para valores NULL no XML:

Por default o mecanismo de formatação XML do SQL Server 2005 ignora valores NULL, O SQL Server 2005 pode ser instruído
a gerar linhas “vazias” para colunas com valores NULL. Utiliza-se XSINIL para gerar linhas “vazias”

Exemplos:
declare @myXML XML
SET @myXML = (select 100 'coluna 1', 200 'coluna 2', NULL 'coluna 3', 400 'coluna 4'
FOR XML RAW)
SQL SERVER

SELECT @myXML

declare @myXML XML


SET @myXML = (select 100 'coluna 1', 200 'coluna 2', NULL 'coluna 3', 400 'coluna 4'
FOR XML RAW, ELEMENTS XSINIL)
SELECT @myXML

XQUERY e XPATH:
O W3C desenvolveu duas linguagens de consultas que fornecem uma poderosa capacidade para manipular estruturas XML.
XQUERY é uma linguagem de consulta criada para dados XML.

Exemplo com XPATH:

DECLARE @Date nvarchar(50)


DECLARE @UID nvarchar(256)
SET @UID = USER_NAME();
SET @Date = GETDATE();

SELECT TOP(1) LogRecord.query('<errorReport issuedby="{sql:variable("@UID")}" date="{sql:variable("@Date")}"/>'),


(
SELECT LogRecord.query('
for $rec in /logRecord, $err in $rec/error
order by $rec/@timestamp descending
return
<error number="{data($err/@number)}" timestamp="{data($rec/@timestamp)}" server="{data
($rec/@machine)}">
<message>{data($err/message)}</message>
<module>{data($err/module)}</module>
</error>')
FROM UniversalLog
WHERE LogRecord.exist('/logRecord/error') = 1
FOR XML PATH(''),TYPE
)
FROM UniversalLog
FOR XML PATH(''), ROOT('UniversalLog'), TYPE
26 Coluna: Desvendando o SQL Server
Exemplo com XQUERY:

SELECT LogRecord.value('(/logRecord/error/@number)[1]','int') AS [ErrorNumber],


LogRecord.value('(/logRecord/@timestamp)[1]','nvarchar(20)') AS [TimeStamp],
LogRecord.value('(/logRecord/@machine)[1]','nvarchar(10)') AS [ServerName],
LogRecord.value('(/logRecord/error/message)[1]','nvarchar(100)') AS [Message],
LogRecord.value('(/logRecord/error/module)[1]','nvarchar(20)') AS [Module]
FROM UniversalLog
WHERE LogRecord.exist('/logRecord/error') = 1
SQL SERVER

Modificando dados XML

Dependendo de como os dados XML foram armazenados, o SQL Server 2005 oferece duas tecnologias distintas para modificar
dados, se os dados estão armazenados em coluna XML, pode-se utilizar o método modify() para incluir, apagar ou atualizar os
dados XML(Neste artigo estaremos focando o método modify()).
Por outro lado, se os dados estão armazenados em estrutura relacional, mas processados como XML, pode-se usar FOR XML
ou SQLXML.
A linguagem XQUERY não oferece palavras-chave para manipulação de dados, mas a Microsoft estendeu as capacidades da
XQUERY no SQL Server 2005 incluindo um conjunto de instruções para que o desenvolvedor possa adicionar atualizar e apagar
dados XML (XML DML = Data Manipulation Language).

O método Modify() recebe um único parâmetro de entrada que obriga a validação XML DML e executa no XML.

Exemplo para remover empregados com códigos 1, 2 e 3 dos seus respectivos departamentos (7, 4, 1) usando a palavra-chave
delete:

Set @a.modify(„delete /Deptos/Depto[@id=7] /Funcionarios/Func[@id=1]‟


Set @a.modify(„delete /Deptos/Depto[@id=4] /Funcionarios/Func[@id=2]‟
Set @a.modify(„delete /Deptos/Depto[@id=1] /Funcionarios/Func[@id=3]‟

Existem três palavras-chave no XML DML definidas pelo SQL Server 2005: Insert, replace value of e delete.

Como usar o método modify() no T-SQL UPDATE?

update text in the first manufacturing step SET @myDoc.modify(' replace value of (/Root/Location/step[1]/text())[1] with "new
text describing the manu step" ')

Exemplos:
USE CodificandoXML
GO
UPDATE UniversalLog
SET LogRecord.modify('
insert <information flag="custom"><message>SQL Server service is starting</message></information>
into logRecord[1]')
WHERE ApplicationName = 'SalesApp'
27 Coluna: Desvendando o SQL Server
UPDATE UniversalLog
SET LogRecord.modify('
replace value of (logRecord/information/message)[1]
with "Not enough memory"')
WHERE ApplicationName = 'HoursReport'

UPDATE UniversalLog
SET LogRecord.modify('
delete logRecord/post')
SQL SERVER

WHERE ApplicationName = 'CustomerService'

SELECT * FROM UniversalLog

Criando Índices XML

Você pode criar índices XML usando a mesma definição do Transact SQL para criar índices relacionais. A sintaxe para criar um
índice primário XML segue abaixo:

CREATE PRIMARY XML INDEX Index_Identifier


ON table_name (XML_typed_column_name);

Podem-se criar índices secundários sendo que, para este tipo de índice, existem 3 tipos distintos:
PATH, VALUE e PROPERTY.

Sintaxe para índice secundário PATH XML:


CREATE XML INDEX Secondary_Index_Identifier ON table_name (XML_typed_column_name);
USING XML INDEX Primary_Index_Identifier FOR PATH

Sintaxe para índice secundário VALUE XML:


CREATE XML INDEX Secondary_Index_Identifier ON table_name (XML_typed_column_name);
USING XML INDEX Primary_Index_Identifier FOR VALUE

Sintaxe para índice secundário PROPERTY XML:


CREATE XML INDEX Secondary_Index_Identifier ON table_name (XML_typed_column_name);
USING XML INDEX Primary_Index_Identifier FOR PROPERTY

Por enquanto ficaremos por aqui finalizando os estudos de XML e SQL Server 2005. Preparem-se, a viagem promete! Na próxi-
ma edição estarei apresentando algumas novas funcionalidades do SQL Server 2008.

Alexandre Lopes atua como consultor especialista em SQL Server em projetos da Y2K-TI (http://www.y2k-ti.com.br).
Possui mais de 10 anos de experiência na área de TI, sendo certificado Microsoft com os títulos MCT, MCSE e MCDBA. Como
instrutor MCT (Microsoft Certified Trainer) possui cerca de 4.200 horas ministrando treinamento oficial Microsoft.
29

Cinema
MEU NOME NÃO
É JOHNNY

http://www.meunomenaoejohnnyfilme.com.br/

O cinema brasileiro mais uma vez nos contempla com um anti-herói com cara de
mocinho. Na realidade Johnny, ou melhor, João Guilherme Estrella, é o herói do fil-
me. A maioria de nós torce por seu triunfo; chora por suas angústias, se emociona
com a sua trajetória.
Meu Nome Não É Johnny eleva ainda mais o nível do cinema brasileiro, chegando ao
patamar dos grandes filmes europeus. Mas o objetivo aqui não é fazer comparativos,
seja com o belíssimo mercado europeu ou com a bilionária fábrica de cinema holly-
woodiana.
A produtora Mariza Leão deu a tacada certa na escolha do elenco, colocando a frente,
Selton Mello no papel do carismático Johnny, Julia Lemmertz como mãe do protago-
nista e também a doidinha Cléo Pires, inspiração e perdição do nosso herói.
Mariza apostou forte no diretor Mauro Lima, que até então fez seus melhores traba-
lhos na música, produzindo e dirigindo bons vídeo-clipes e assinando alguns arranjos musicais. Mauro mandou bem na dinâmica dos diálogos.

Ok, nobres, como de costume, chega de ladainha e vamos pra pancada: análise do filme!
“O que é iiiiissso, vééééei? Que filme é esse? Alucinante, empolgante, vééééi, me fala aí!?”. Essa pérola saiu de
um brother, que prefiro manter anônimo, mas que retrata o sentimento de quem assiste ao filme.
Johhny, um playboy de classe média-alta, adorado pelos pais e muito popular entre os amigos, vive sempre
acelerado, bom anfitrião das festas promovidas que ocorrem em sua mansão. Consumindo uma droguinha
aqui, outra ali, mas nada pra deixá-lo doidão, até que vê uma excelente oportunidade de negócio naquele
movimento todo. Compra uma pequena quantidade e revende. Lucro certo. Aumenta o volume de com-
pra e melhora o nível das festas. O dinheiro entra e sai muito fácil da mão de Johnny.
Numa das festanças conhece Sofia, interpretada por Cléo Pires, e tem um romance avassalador. Numa
grande transação, Johnny vai torrar seu dinheiro na Europa, com sua doce amada.
Cenas dramáticas se misturam com momentos hilários e por que não dizer impagáveis, como a chegada de um novo chefe na prisão. O novo big boss,
interpretado por Luis Miranda (da trupe do Sob Nova Direção) chega pilhado pedindo “Meque Donáud”, “meque nuguétis” e outras iguarias com sua gíria
hilariante. É dele também um dos momentos mais engraçados do filme, quando Johnny é forçado „a traduzir um diálogo entre brasileiros e africanos.
Cássia Kiss, também tem uma atuação interessante no papel de juíza. Ela consegue transmitir um forte sentimento de angústia, momentos de reflexão e
muita energia. Fique atento ao postal enviado pela juíza. Não perca tempo. Vá contemplar o cinema nacional com esse bom filme. Altamente recomenda-
do.

Emerson Facunte - Curtindo sua fase de filmes nacionais


30 Blogs, Foruns e Links

Blogs:
Alexandre Tarifa: http://blogs.vstsrocks.com.br/alexandretarifa/default.aspx
Emerson Facunte: http://www.facunte.com.br
Diego Nogare: http://www.diegonogare.net

Fórum (Endereços para Entrar no Grupo):

Codificando .NET: codificandodotnet-subscribe@yahoogrupos.com.br


XNA-BR: xna-br-subscribe@yahoogrupos.com.br

Sites Recomendados:
Visual Studio 2008: http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx
SQL Server CTP: http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx
31
.Close()
Windows Forms... também conhecida de Desktop, winforms, client, aplicaçãozinha que se instala, etc... é um tipo de aplicação utiliza-
do a alguns anos (desde a era VB) em muitas empresas como padrão de interface de aplicações. Como todas as outras tecnologias
sofreu muitas alterações durante esses anos, e dentro da plataforma .Net foi incorporada oficialmente como Windows Application e
a versão mais recente é a 2.0.
Muitas pessoas dizem que seria o fim das aplicações Windows Forms com o domínio das aplicações web... que domínio? Enfim, nin-
guém pode negar que desenvolver uma aplicação Windows Forms é muito mais produtivo do que uma aplicação web... mas tudo
bem, pouco importa se o desenvolvedor tem mais trabalho ou não... pensando no cliente... uma aplicação Windows Forms também
oferece uma produtividade MUITO superior... e não venham me dizer que os frameworks AJAX da vida oferece uma produtividade
semelhante que é IMPOSSÍVEL.
Tecnicamente a justificativa é simples: Windows Forms – todo o poder do computador do cliente. Web – todo o poder (pouco) do
Browser.
Agora, se pensarmos em distribuição, é inegável também que é muito mais simples distribuir uma aplicação Web... mesmo com re-
cursos novos como o Click Once, que utiliza Web para distribuir... podemos dizer que Web tem uma vantagem boa.
Porém, como grandes partes das aplicações Windows Forms são feitas como solução para ambientes coorporativos, ai o cenário
muda... distribuir Windows Forms fica tão fácil como uma aplicação Web.
Acredito que a morte do Windows Forms não viria devido às aplicações Web.
Finalizado essa discussão agora entra a briga mais acirrada. A Microsoft lançou recentemente as aplicações WPF (Windows Presenta-
tion Foundation) que é uma revolução do Windows Forms com um ambiente gráfico mais rico (3D) oferecendo recursos de interfa-
ce realmente muito ricos... mais ricos do que Windows forms.
Fazendo uma comparação boba: Asp.Net – Classe média, Windows Forms – Classe Alta e WPF – Milionários.
Porém tudo tem um custo. Hoje ainda, mesmo com o Visual Studio 2008, é muito mais produtivo desenvolver uma aplicação Win-
dows Forms... são mais de 10 anos de maturidade e ferramentas evoluindo.
Ainda sim, muitas aplicações vão ser feitas em WPF. Principais razões: Modismo, vão dizer por ai que é legal e algumas realmente por
necessitar dos recursos sensacionais do WPF.
Agora, aplicações comerciais... faturamento, contas a pagar, BI, folha de pagamento, etc etc etc... não existe a menor razão para isso.

Alexandre Tarifa é MVP Visual Developer Visual Basic .Net, bacharel/pós graduado em Ciência da Computação, trabalha em
diversos projetos. Tem participado de diversos projetos que começam como Web e terminam com Smart Client.
Especialista .Net e Líder de Projetos na ITGROUP (www.itgroup.com.br), editor da revista Codificando e-Magazine e fanático
torcedor do São Paulo Futebol Clube. Blog: www.vstsrocks.com.br/alexandretarifa.