Resumo TechEd 2007 – Dia 7

Esse é o último post da série com o Resumo do TechEd 2007 e caso você não tenha lido o resumo dos outros dois dias, recomendo a leitura dos dois posts abaixo:

Resumo TechEd 2007 – Dia 5
Resumo TechEd 2007 – Dia 6

Vamos as palestras:

  • Software + Services

Palestra realizada pelo Otavio Coelho, arquiteto da MS, onde foi comentado sobre os benefícios de aplicações que utilizam o conceito Software + Services. Um exemplo deste conceito é a plataforma Live da Microsoft onde você tem um client que te permite trabalhar desconectado e ao mesmo tempo utiliza serviçoes na Web. O Windows Live Mail é um exemplo perfeito disso.

Falou também sobre os desafios da SOA, principalmente sobre a dificuldade de como escolher o que deve ser SOA ou não dentro da sua aplicação e também sobre o SOAMM (SOA Maturity Model), um modelo de maturidade para SOA recentemente lançado pela Microsoft que classifica a maturidade em 4 níveis: básica, padrão, avançada e dinâmica.

Eu queria ter participado mais desta palestra, no entanto, cheguei atrasado e tive que sair mais cedo, mas de qualquer forma foi uma apresentação muito rica em conceitos de arquitetura.

  • Composite Applications e Office Business Applications (OBA)

Mais uma palestra para abrir a mente, pelo menos a minha 🙂 Eu que até hoje trabalhei muito pouco com desenvolvimento na plataforma Office, pude ver como está fácil usar o Office como plataforma de desenvolvimento. Criar Ribbons, Forms Region e Task Panes está muito fácil e oferece uma experiência para o usuário incrível.

Muito conteúdo sobre o assunto, pode ser encontrado no blog do palestrante, Waldemir Cambiucci.

  • Construindo Aplicações Windows Communication Foundation e Windows Workflow Foundation com Microsoft Visual Studio 2008

Mais uma palestra do Waldemir e mais um show de palestra. Inicialmente, essa palestra seria dada pelo Marcelo Uemura, desenvolvedor do Windows Workflow Foundation, mas por problemas de saúde ele não pôde comparecer.

A palestra começou com uma comparação bem engraçada, porém fundamental para o entendimento do WCF. O exemplo citado foi que no COM+ você tem um série de recursos que o servidor disponibiliza pra você e que você não precisa se preocupar com a configuração e no WCF você tem a liberdade de escolher cada um desses recursos, combinando vários deles, por exemplo: hosting, protocolos, encoders, comportamento de transações, concorrência e por aí vai, porém agora você vai precisar saber pra que serve cada um desses recursos para tirar o melhor proveito da plataforma.

Depois disso, foi passado uma visão geral da arquitetura do WCF, foi citado os principais componentes (contratos de dados e serviços, bindings, endpoints, behaviors) e como eles se relacionam e uma demo pra esclarecer melhor todo o conceito.

Em seguida, foi apresentado o Windows Workflow Foundation trabalhando como um consumidor do WCF e ficou bem claro a facilidade de desenhar processos de negócio com o WF. Um workflow de demonstração foi montado utilizando atividades palalelas, atividades condicionais e de código e algumas delas consumindo serviços WFC.

Uma palestra bem completa demonstrando a integração dos dois principais pilares do .NET Framework 3.0.

  • Arquitetura de Infra-estrutura para a Web

Palestra dada por Fernando Gebara que começou falando sobre a importância de tratar intranet, internet e extranet da mesma forma do ponto de vista de segurança, já que 80% dos ataques são de origens internas ou com a ajuda de alguém interno.

Comentou também sobre a diferença do conhecimento prévio dos usuários da inter, extra e intranet, já que conhecemos nossos usuários da intra e a extra, mas não da internet e com isso podemos aplicar role-based security para determinar o que estará disponível ou não para os usuários.

Foi comentado também da importância da padronização de hardware para a manutenção da rede e que a virtualização pode ser um grande aliado para a recuperação de máquinas rapidamente. E nessa discussão, citou um dado sobre um dos datacenter da Microsoft que deixou muita gente surpreso. Ele citou que existe um datacenter com mais de 60.000 computadores que são administrados apenas por 5 pessoas.

Foi uma palestra bastante teórica, mas que falou de pontos que parecem ser óbvios, mas que nem sempre damos a devida atenção.

  • Desenvolvendo Soluções de BI: criação de dashboards e scorecards e o Microsoft Performance Point 2007

Essa eu realmente caí de paraquedas. Eu estava agendado em um outra palestra, mas o tema sobre BI acabou me interessando e resolvi olhar um pouco pra esse mundo que não conheço praticamente nada. O que eu vi, foi um monte de siglas novas, produtos novos, conceitos que eu não sabia definir muito bem, mas que já estão na minha lista de estudos.

Inicialmente o Christiano Santos mostrou como está fácil criar indicadores no Excel 2007. Mostrou vários recursos da ferramenta para destacar células, apresentar setas de indicação, imagens customizadas de modo a deixar muito mais fácil a leitura dos dados.

Em seguida, fez a publicação desta planilha no Excel Services, um recurso que vêm com o Sharepoint Server 2007 e que permite a visualização da planilha na web. O interessante desse produto é que você pode escolher publicar a planilha inteira, escolher algumas worksheets ou até mesmo só alguns objetos da planilha que você deseja publicar.

Depois disso foi passado os serviços disponíveis no Sharepoint Server 2007 e alguns sites de demonstração apresentando dashboards, scorecards e um novo produto, o Microsoft PerformancePoint Server 2007 que pelo que deu pra entender é um sistema de gerenciamento empresarial que une monitoramento, análise e planejamento.

Bom galera, com isso finalizo o resumo do TechEd 2007 e agora os próximos posts deverão apronfundar nos temas que mais me chamaram a atenção durante o evento (Entity Framework, Visual Studio Tester Edition, Integração do Team System e Project Server) e algumas novidades que forem aparecendo pelo trabalho.

Um abraço

André Dias

Resumo TechEd 2007 – Dia 6

Continuando a série Resumo TechEd 2007, vamos lá com a palestras do segundo dia:

  • Infra-estrutura para o Visual Studio Team System (VSTS)

Regis Gimenis deu um overview das principais features do Team System, citou os processos que o Team System traz por default (MSF for CMMi e MSF for Agile) e outros que podem ser adicionados, como o SCRUM. Explicou os principais tipos de works items (tasks, bugs) existentes e como eles estão relacionados a cada processo. Passou pelo portal do Projeto que é baseado no Sharepoint services e gerado automaticamente quando um projeto é criado no Team System. Junto com o portal do projeto são gerados dezenas de relatórios que permitem acompanhar work items, qualidade, testes.

Na parte de testes ele mostrou um pouco sobre como criar testes manuais e testes unitários, depois deu uma focada bem legal no Source Control e falou sobre checkout, checkin, branch e merge, além das políticas que podem ser associadas durante ao checkin e por fim alguns produtos que podem ser adicionados ao team system, como o Team System Web Access.

A palestra teve muuuito conteúdo e pra quem não conhecia o produto foi um prato cheio.

  • Domain Specific Languages (DSL) com VSTS

Um assunto totalmente novo pra mim e que me agradou muito, não só pelo conteúdo técnico, mas pela forma divertida com que André Furtado apresentou.

A palestra começou com o André explicando que todo mundo usa DSL no dia a dia e eu que achava que apenas coisas como o Class Diagram do Visual Studio era DSL, acabei descobrindo que até Cobol, LISP e o bom o e velho MS-DOS são exemplos de DSL, já que as DSLs podem ser visuais ou não.

Depois ele entrou em detalhes de quando devemos ou não utilizar a DSL e basicamente devemos utilizá-la quando iremos reutilizá-la em sistemas parecidos e por fim fez uma demo criando uma DSL para um jogo de quiz.

Pra fazer uma demo daquele tamanho, num TechEd com pouco mais de uma hora de duração, o cara tem que ser muito macho.

O ppt da palestra pode ser baixado aqui.

  • VSTS 2008 Test Edition e VSTS 2008 Test Load Agent

A Patrícia Mantovani foi outra palestrante que me surpreendeu muito. Apresentou detalhes do Visual Studio Tester Edition que até então eu nem imaginava que existisse.

Além dos conhecidos testes unitários e testes manuais, a ferramenta oferece também testes web com gravação de “macros” para reprodução futura e na versão 2008 inclui o suporte a AJAX. Mostrou como fazer Databind com testes unitários. Ainda nos testes web, ela mostrou como fazer algumas customizações para deixar os testes mais inteligente e fechou com chave de ouro mostrado o teste de carga.

Durante essa demo ela simulou acessos simultaneos, utilizando varios tipos de distribuições de usuários, apresentou dezenas de gráficos fazendo com que o Visual Studio parecesse o Excel por um momento 🙂 e finalizou mostrando o Test Load Agent que é um utilitário que pode ser instalado em máquina da rede para literalmente BOMBARDEAR um servidor específico de teste. Muuuito legal!

  • ADO.NET Entity Framework VSTS 2008

Vou tentar ser imparcial neste comentário porque o LINQ e o EF tem me decepcionado muito ultimamente 🙂

O Luciano Moreira fez uma excelente palestra mostrando a arquitetura do EF. Citou que o Beta 3 está previsto pra sair em breve, porém que não há uma data prevista de entrega do produto ainda. Falou também que Oracle e IBM estão trabalhando em conjunto com a Microsoft para liberar versões do LINQ para seus bancos de dados.

Além dessas informações que toda a comunidade que acompanha a evolução do LINQ busca, o Luciano mostrou exemplos de queries LINQ que deixou o pessoal que não conhecia de boca aberta e ao mesmo tempo desesperado quando mostrou os arquivos de mapeamento.

Após a palestra ele me disse uma coisa que me deixou intrigado. Que o Entity Framework não é um concorrente do NHibernate. Que há uma estratégia muito maior que isso que deverá integrar vários produtos e que o OR/M é só uma parte do Entity Framework.

Vou pesquisar melhor isso e postarei detalhes em breve.

  • Team Foundation Server e Project Server

A última palestra do dia e a palestra que eu mais esperava do TechEd, não foi como eu imaginava.

O Marcus Garcia teve problemas com as máquinas virtuais que não subiram e a palestra virou praticamente uma mesa redonda. A palestra acabou valendo pelas discussões que surgiram e pela continuação dela na seção Ask The Experts onde pude tirar algumas dúvidas.

  • ASK THE EXPERTS

Foi o primeiro ano que participei que teve essa seção. Trata-se de dezenas de mesas onde funcionários da Microsoft, MVPs e especialistas de produtos / tecnologias se reunem para tirar dúvidas dos profissionais.

Eu acabei ficando na mesa do Team System onde tive oportunidade de conversar com algumas referencias Brasileira do produto: Fabio Camara, Igor Abade, Marcus Garcia e a Patrícia Mantovani.

Espero que tenha algo parecido em eventos futuros.

É isso galera, logo logo, vem o resumo do ultimo dia do Tech Ed.

Abraços

André Dias

Resumo TechEd 2007 – Dia 5

Tudo o que é bom dura pouco e infelizmente com o TechEd não foi diferente. Foram 3 dias de muuuuita informação, muita palestra bacana, além de uma grande oportunidade pra fazer contatos e rever amigos.

Eu gostei muito da variedade dos temas. Tivemos palestras de Arquitetura, Desenvolvimento, Banco de Dados, Windows, Office, BI. Tinha hora que tava até difícil de escolher em qual palestra ir devido aos temas serem super interessantes.

Vou postar abaixo um resumo das palestras que vi no primeiro dia.

  • Windows Server 2008 e SQL 2008

Totalmente novo pra mim. Gostei muito das novas features do dois produtos, principalmente do HyperV, o novo produto de Virtualização da Microsoft. Foram citados ainda novidades na Instalação do Windows 2008, onde será possível instalar o Windows com apenas o Server Core, sem a necessidade de instalar a interface gráfica e gostei bastante também da nova feature do SQL 2008 que permite que eu defina políticas globais de configuração de banco de dados. Ficou muito fácil para o DBA identificar bancos fora dos padrões definidos pela empresa, até mesmo nomenclatura de tabelas e além de identificar a correção fica a apenas um click. Muito bom!

  • Visual Studio 2008

Novidades interessantes: Multi target. É possível compilar soluções em .NET 2.0, 3.0 e 3.5. Foram mostradas demos interessantes do LINQ e da integração com o Office 2007. Tá muito fácil criar addins para o Office agora. Só não gostei mais, porque já conhecia muitas das novidades do produto.

  • Unificando as Comunicações

Um show de apresentação. Foram apresentados cenários que é o sonho de qualquer pessoa. O gringo junto com o time do Brasil mostrou como a comunicação evoluiu, em seguida apresentou um vídeo mostrando a construção de uma casa num mundo totalmente conectado: Cliente, Arquiteto, Engenheiro e Forncedores trabalhando com Smartphones, Tablet PC, Surface, sistemas embarcados e garantindo que mudanças na planta fossem concluídas, enviadas para aprovação e material comprado em questão de horas.

Depois de ver o vídeo, fiquei pensando: “Será que falta muito para termos isso no Brasil?” Aí para a minha surpresa fizeram uma demo mostrando conferências com vídeos, integração do Communicator com telefones fixos e celulares. Tudo prontinho pra gente já começar a usar.

  • Por Dentro da Estratégia de Interoperabilidade da Microsoft

Mais um show de palestra. Não sou muito bom com nomes, mas se não me engano o palestrante foi o Roberto Prado, um cara que cuida da divisão Open Source da Microsoft. Um cara que usa Linux, Opera, frequenta eventos de Linux e por aí vai. Foi falando muito dos benefícios da adoção do OpenXML e da interoperabilidade dos produtos da Microsoft com produtos de outras empresas. Na minha opnião a melhor palestra do TechEd.

  • Aproveite melhor o seu Teched!

Foi legal. Explicou como nasceu o TechEd, apresentaram os assuntos que seriam abordados, o que teria além das palestras, mas o que mais me chamou a atenção foi a forma que apresentaram. Ficou muito engraçado o bate bola que os dois palestrantes fizeram. Em alguns momentos eu até lembrava dos anúncios do Shoptime, onde o cara diz. “E não é só isso. Se você ligar nos próximos 10 minutos, ainda ganhará um super …”

Bom .. é isso, em breve postarei o resumo dos outros dias.

Abraços

André Dias

Version Control e SQL Management Studio

Uma dúvida muito comum nas palestras relacionadas ao Team System no TechEd 2007 foi sobre os clients do Version Control. Muitas pessoas queriam saber se é possível utilizar Version Control com Visual Basic 6, SQL Management Studio, Java, etc ..

A resposta é SIM! A própria Microsoft liberou um produtinho chamado Visual Studio 2005 Team Foundation Server MSSCCI Provider que permite a utilização do Version Control através dos seguintes produtos:

  • Visual Studio .NET 2003
  • Visual C++ 6 SP6
  • Visual Visual Basic 6 SP6
  • Visual FoxPro 9 SP1
  • Microsoft Access 2003 SP2
  • SQL Server Management Studio
  • Sparx Systems Enterprise Architect 6.1
  • Sybase PowerBuilder 10.5
  • Toad for SQL Server 2.0

Pra quem usa o Java como plataforma, temos ainda o Teamprise. Esse produto é um plugin que permite conectar o Eclipse ao TFS. Não é free, mas já é uma solução.

É isso aí, produto Microsoft gerenciando SDLC em muitas linguagens 🙂

[]s
André Dias

DLinq só funciona com SQL Server?

Tenho visto em alguns fóruns muitas pessoas afirmarem que o DLinq será utilizado especificamente para SQL Server. Embora essa afirmação seja verdadeira hoje, o DLinq dará suporte sim a outros bancos de dados.

Segundo um post de Dinesh Kulkarni, Program Manager do Linq, a dificuldade de dar suporte ao Oracle e a outros bancos de dados é que não há nenhum DB realmente SQL-ANSI e mesmo que houvesse, vários bancos tem recursos específicos que devem ser tratados pelo próprio fabricante. Com isso, eles estão trabalhando em um provider model que permitirá ISVs e a própria comunidade escrever implementações para um banco de dados específico.

Meu sentimento é que mesmo a Microsoft disponibilizando apenas um provider model, deveremos ter, junto com o lançamento do Linq, providers para os principais bancos de dados do mercado, como já ocorreu com outras versões do Visual Studio e o ADO.NET.

[]s
André Dias

Um pouco mais sobre ADO Entity Framewrok

Como eu escrevi no post anterior, essa semana eu baixei o CTP de junho do Orcas para dar uma olhada no produto, na verdade, o meu real interesse é ver como está a evolução do LINQ e e em particular do ADO Entity Framework (EF).

Pra quem não conhece, o EF será o novo framework de mapeamento ORM da Microsoft, uma espécie de concorrente do NHibernate.

Bom, após analisar os exemplos do EF, confesso que fiquei muito confuso. Não entendi muito bem porque eu tinha que fazer o mapeamento tanto em arquivos XML e também decorar as minhas entidades (DTO, Model, etc) com vários atributos com as mesmas informações que já estavam no XML.

Postei essa dúvida no fórum do MSDN (http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1824146&SiteID=1 ) e algumas pessoas do time me responderam que é isso mesmo. A arquitetura do produto até agora te obriga a fazer uma herança na sua entidade, decorar suas propriedades com atributos e ainda por cima fazer o mapeamento com XML.

Ok, ok.. O visual studio faz boa parte do trabalho pra você, mas e o tal dos conceitos de persistence ignorance, POCO? Poxa, eu não quero que o meu model fique fortemente acoplado com um framework. Alguns podem falar que é purismo, que é frescura, mas não é. Eu simplesmente quero deixar meu model, minhas entidades de negócio desacopladas pra poder usar um outro framework sem muitos problemas se eu quiser.

No entanto, o pessoal do time de dev do produto disseram que a cada release eles estão trabalhando para chegar mais próximo do POCO (Plain Old CLR Objects), ou seja, uma classe .net que não herde de ninguém, não tenha nenhum atributo, umas classe pura e sem metadados. Isso é ótimo, mas me disseram também que isso não estará nem na primeira release que deve sair no meio de 2008.

Legal, então vou ter que esperar até 2009 pra ter um framework da Microsoft pra ORM que aplique conceitos básicos de orientação a objetos e que faça o que muitos frameworks (como o NHibernate, por exemplo) já fazem há algum tempo?? É isso aí !!

Estranho né?? Nem tanto, achei talvez uma explicação para isso. Parece que um dos Devs do produto não acha (ou pelo menos achava) isso importante e só começou a estudar isso agora, pois a comunidade está pedindo muuuito e ele achou que deveria ter uma razão pra isso 🙂

Vamos ao comentário dele: “I have devoted real time to studying agile design principles and domain driven design…….. Initially I thought that some of the requests for *complete* persistence ignorance were the products just of dogma rather than fully informed and reasoned arguments, but when so many people give such passionate feedback it was clear that I needed to investigate more before I could claim to have any sort of an informed opinion. The product of my research is that I am now truly convinced of the importance of complete persistence ignorance for some scenarios. As a result, the team is now working on a series of product changes aimed at ensuring that a later move to complete persistence ignorance will not be a fundamental breaking change.

O post completo pode ser lido em: Persistence Ignorance: OK, I think I get it now.

Bom, pelo menos fico feliz que o time da Microsoft começou a olhar outras alternativas de arquitetura e estudar um pouco de Design Patterns. (Que coisa não??)

Vou ficando por aqui esperando ansiosamente o próximo CTP pra ver o que teremos de melhoria no Entity Framework, mas enquanto não me convencerem que o EF é melhor, vou continuar com o bom e velho NHibernate, feito pela comunidade e com código aberto 🙂

André Dias

Entity Framework só depois do Orcas

Essa notícia é meio velhinha, mas acho que ainda é atual.

Essa semana a MS liberou o CTP de Junho do Orcas e junto com ele novidades sobre o Entity Framework. Até aí legal, deu um trabalhinho pra instalar no Vista, mas depois de montar uma máquina virtual e instalar pela segunda vez, funcionou.

Baixei os Samples do Entity Framework comecei a rodar e parece ser bem interessante. Fiquei com algumas dúvidas e numa das pesquisas nos fórums do MSDN descubro que o negócio só será lançado após o Orcas como um update lá pro meio de 2008.

Será que é tão difícil assim construir um framework ORM? Se não estou enganado a MS começou a falar disso em 2001 num PDC onde o framework era chamado de “Orca”, depois disso anunciaram o ObjectSpaces que viria no Visual Studio 2005. Chegaram até a adicionar no beta 1, mas removeram no Beta 2 e falaram que seria lançado com o WinFS.

Aí mataram o projeto do ObjectSpaces, anunciaram que ele seria descontinuado e tempos depois anunciaram o LINQ e o tal do Entity Framework. Pensei eu: “Finalmente agora vou ter um framework da MS pra trabalhar com ORM”.

E não é que adiaram de novo… Olha a notícia aí:
http://blogs.msdn.com/adonet/archive/2007/04/28/ado-net-entity-framework-update.aspx

Tô vendo que vou continuar com o bom e velho Hibernate :-p

Abraços
André Dias

Teste Unitário e Code Coverage com Visual Studio

Ultimamente tenho visto muita gente falar sobre testes unitários, metodologias ágeis, garantia de qualidade, mas implementar o tal do teste unitário que é bom mesmo, são poucas empresas que conheço que fazem isso de verdade.

Quando digo que são poucas, não estou me refirindo a você abrir o Visual Studio, criar um projetinho de teste e criar um método simples para testar apenas o “caminho feliz” do seu método, estou falando de você planejar os seus testes unitários antes e criar vários métodos de testes para cobrir todas, ou pelo menos a maioria, das situações que o seu método possa executar.

Isso engloba em testar range de valores, parametros opcionais, se as exceções são levantadas corretamente e por aí vai. Se for preciso utlizar Mock Objects, ótimo, vamos fazer isso também, mas é extremamente importante que você faça métodos de testes que sejam eficientes e não apenas para dizer que está utilizando testes unitários na sua aplicação.

Um recurso muito útil presente no Visual Studio (edições pra Developer e Tester) é o Code Coverage. Esse recurso ligado junto com os testes unitários permite ao usuário acompanhar visualmente quais trechos do código foram testados ou não.

Vamos ver um exemplo de como ele funciona:

1. Vamos criar um projeto do tipo Class Library e adicionar uma classe Calculadora como o exemplo abaixo:


public class Calculadora
{
public static float Dividir(float d1, float d2)
{
if (d2 == 0)
{
throw new DivideByZeroException();
}
else
{
return d1 / d2;
}
}

public static int Soma(int a, int b)
{
return a + b;
}
}

2. Em seguida , vamos adicionar um projeto do tipo Test Project e adicionar uma classe chamada CalculadoraTest com o seguinte código:


[TestClass]
public class CalculadoraTest
{
[TestMethod]
public void DivisaoComumTeste()
{
float resultado = Calculadora.Dividir(6, 3);
float esperado = 2;

Assert.AreEqual(esperado, resultado);
}
}

Veja que a classe de teste possui apenas um método e não está cobrindo a situação de divisão por zero, e nem o método Soma. Isso não quer dizer que o método não funcione, mas ele não foi testado.

Se rodarmos esse teste, teremos o seguinte resultado:

Até aí nada de muito interessante, a janela mostra apenas que o teste foi executado com sucesso. O grande barato é quando ligamos o Code Coverage o colamos os testes unitários para rodar junto.

Para habilitar o Code Coverage, vá no arquivo localtestrun.testrunconfig da sua solução e você verá a seguinte tela:

Marque o Assembly CodeCoverageSample.dll e mande rodar os testes novamente. Quando terminar os testes, acesse o menu Test/Windows/Code Coverage Results e veja que coisa linda 🙂

O Visual Studio te dá a porcentagem de código testado agrupados por métodos, classes, namespaces e assemblies e além disso marca no código por quais trechos ele passou ou não.

Dessa forma fica muito fácil visualizar que temos que escrever mais métodos de testes para testar a situação da divisão por zero e para garantir que o método de soma está funcionando corretamente.

Agora que já conhecemos o Code Coverage, é só definirmos uma meta para o nosso projeto (80, 90, 100% de cobertura) e brigar com o seu gerente pra ele alocar tempo para você criar métodos de testes que cubram todo o seu código 🙂

Um grande abraço

André Dias