quarta-feira, dezembro 19, 2007

Números do Team System na Microsoft

Visitando o Blog da Aline Frias, encontrei uma informação super interessante sobre a utlização do Visual Studio Team System e do Team Foundation Server na própria Microsoft. É isso aí! A MS utilizando seus próprios produtos e com números realmente impressionantes. Confiram:

  • Projetos no Team Foundation Server: 1.355 (taxa de crescimento de >100 novos projetos/mês)

  • Usuários Ativos: 8.452 (grupos que já usam TFS: MSIT, DevDiv, SQL, Office, Windows, MSCOM e Windows Live/MSN)

  • Work Items: 1.254.266

  • Arquivos de Código-Fonte: 27.311.195 (isso mesmo, mais de 27 milhões de arquivos-fonte!)

Os números foram enviados pelo Joe Schwetz, Group Manager do time de TFS.

Abraços
André Dias

Entity Framework para Oracle, DB2 e outros bancos

Há alguns meses, eu publiquei um post sobre o LINQ to SQL (até então conhecido como DLinq) trabalhar exclusivamente com SQL Server e falando que a tendência era de que a Microsoft iria disponibilizar um Object Model para parceiros estenderem.

Pois bem, parece que a tendência se confirmou e hoje o David Sceppa, Program Manager do ADO.NET, divulgou uma lista de parceiros que estão trabalhando em providers do Entity Framework para Oracle, DB2, MySQL e muitos outros. Confira a lista completa dos parceiros e providers abaixo:


  • Core Lab - fornecendo drivers para Oracle, MySQL, PostgreSQL e SQLite

  • IBM - fornecendo drivers para IBM DB2 data server e Informix Dynamic Server (IDS)

  • MySQL AB - fornecendo drivers para MySQL

  • Npgsql - fornecendo drivers para PostgreSQL database versões 7.3+ e 8.x

  • OpenLink Software - fornecendo drivers para Oracle, Informix, Ingres, Sybase, MySQL, PostgreSQL, DB2, Progress e Microsoft SQL Server, e qualquer data source acessível via OpenLink ODBC ou JDBC bridge drivers

  • Phoenix Software International - fornecendo drivers para SQLite databases

  • Sybase - fornecendo drivers para SQL Anywhere databases

  • VistaDB Software - fornecendo drivers para to VistaDB databases

  • Firebird - fornecendo drivers para Firebird

Pena que alguns deles são pagos, mas acredito que teremos em breve bons providers free.

Abraços
André Dias

domingo, dezembro 16, 2007

Está realmente mais fácil desenvolver software?

Apesar de não ser muito velho, eu tive a oportunidade de escrever alguns programinhas em linguagens procedurais como o Cobol e Clipper. Para fazer esses programinhas, que ainda vemos em padarias e farmácias, eu não usava mais que um Edit do MS-DOS, um compilador e um link editor.

Eu escrevia as dezenas de .PRGs, não tinha que saber nada além da linguagem e quando queria "abusar" um pouquinho, usava no máximo uma biblioteca gráfica chamada CLBC.

Bons tempos! Eu era feliz e não sabia!

Há duas semanas, eu participei do TechEd 2007, um evento fantástico, muita coisa nova, mas uma afirmação que vi em várias palestras me fez para para pensar um instante. Está realmente mais fácil desenvolver softwares?

Antes mesmo de escrever uma linha de código, eu tenho que ler caso de uso, entender o diagrama de classes, ver o comportamento dinâmico através do diagrama de sequência, analisar o MER, dar uma passada pelo documento de requisitos não funcionais e ver o que vai se aplicar ao caso de uso que irei desenvolver, planejar testes unitários, só para citar alguns.

E na hora de codificar, o que irei usar? Silverlight, WPF, ASP.NET Ajax, ADO Entity Framework, LINQ, WCF, WF, ASP.NET MVC, .NET Framework 3.5, SQL 2008, DSL. Isso listando apenas tecnologias Microsoft. Se abrirmos o leque para outras empresas ou open source, a coisa fica ainda pior (ou melhor?).

O que mais chama a atenção disso tudo, é que são produtos / tecnologias que não possuem mais que dois anos de vida, sem contar que algumas nem foram lançadas oficialmente. E o VB6, DAO, RDO, ADO, ActiveX, ASP 3, DTS, COM+, Remoting, ASP.NET WebServices que eu usava até algum tempo atrás?

Tenho notado que a cada 2 anos em média, eu tenho que reaprender a fazer software para não ficar desatualizado. E nem sempre você tem a possibilidade de se tornar especialista num produto / tecnologia para utilizá-lo, ou seja, você acaba perdendo muito tempo em erros bobos que acabam consumindo todo o tempo que você "ganharia" utilizando a nova tecnologia.

É, a cada dois anos eu aprendo um monte de tecnologias novas para resolver problemas que as tecnologias do passado diziam que resolveria :-)..

Concluindo, se está mais fácil desenvolver eu não sei, quando eu usava Clipper eu não tinha toda a integração e necessidades que temos hoje, mas que está cada vez mais complicado acompanhar essa evolução tecnológica, está!!! Sabe o que é pior? EU ADORO ISSO!!!

Viva a tecnologia :-p

Abraços
André Dias

Liberação do primeiro CTP do ASP.NET MVC

Semana passada, Scott Guthrie anunciou em seu blog a liberação do primeiro CTP do ASP.NET 3.5 Extensions. Esse novo pacote de extensão do ASP.NET contém os seguintes componentes:
  • ASP.NET Ajax Improvements
  • ASP.NET MVC
  • ASP.NET Dynamic Data Support
  • ASP.NET Silverlight Support
  • ADO.NET Data Services
Como a minha praia é mais arquitetura de software e acesso a dados, de todo esse conjunto de componentes, os que mais me interessam são ASP.NET MVC e ADO.NET Data Services.

Se você também está interessado em aprender um pouco sobre o design pattern Model-View-Controller (MVC), seguem abaixo alguns links que te darão uma boa base de como implementar essa arquitetura em sua aplicação:

ASP.NET MVC Framework (Part 0): What is it?
ASP.NET MVC Framework (Part 1): Building an MVC Application
ASP.NET MVC Framework (Part 2): URL Routing
ASP.NET MVC Framework (Part 3): Passing ViewData from Controllers to Views
ASP.NET MVC Framework (Part 4): Handling Form Edit and Post Scenarios
Scott Hanselman's ASP.NET MVC First Look Screencast
TDD and Dependency Injection with the ASP.NET MVC Framework
Writing Unit Tests for Controller Actions

É, parece que alguns anos após abandonar o Java e o Struts, voltarei a programar com esse conceito na veia (nem vem com aquela história de que ASP.NET já implementa MVC com Page Controller desde a versão 1.0, que não cola) :-)

Abraços
André Dias

quarta-feira, dezembro 12, 2007

Como alterar o Team Foundation Server no Project 2007

Há alguns meses, implantamos o Team System na empresa para avaliarmos o produto. Foi uma instalação Single Server, apenas um projeto de avaliação e muuuuita experiência. Os resultados foram tão bons que hoje temos todos os projetos da empresa hospedados nele e dezenas de desenvolvedores conectados no Team Foundation Server e integração com Excel, Project, desenvolvimento externo, continuous integration, etc.

Acontece que o número de acessos aumentou, os recursos utilizados também e vimos a necessidade de migrar o Team System para uma arquitetura distribuída. Então, colocamos o Team System em algumas máquina, restauramos o Backup e fizemos a migração com sucesso.

Colocamos o servidor novo no ar, notificamos os desenvolvedores e analistas para apontarem para o novo servidor e quando achávamos que estava tudo bem, me aparece um gerente dizendo que não conseguia mais atualizar o MS Project Professional 2007 que estava conectado ao Team System.

Após muito pesquisar, qual é a solução que a Microsoft oferece? Criar um project do zero, importar os Work Items e fazer uma espécie de Merge na unha. Confesso que não acreditei quando vi que tanto o MS Project quanto o Excel não permitem alterar o endereço do Servidor do Team System.

Uma gambiarra que fizemos para resolver o problema temporariamente, foi alterar o arquivo hosts do Windows para apontar o nome do servidor antigo para o IP do novo servidor, mas não recomendo ninguém a fazer isso, pois é muuuuita gambiarra :-) Foi apenas uma solução temporária que encontramos.

Enquanto não achamos uma solução melhor, vou seguir o que a Microsoft indicou no artigo Reconnect a Microsoft Project File to Team Foundation Server.

Mas que foi um belo balde de água fria, num momento que estávamos super empolgados com os testes e planejamento de migração para o VSTS 2008, foi !! Espero que em breve saia algum patch pra isso.

Abraços
André Dias

segunda-feira, dezembro 10, 2007

Especificação do Team System code name Rosario disponível

Eu já tinha me surpreendido com a participação dos Product Managers do Team System participando de fóruns para colher feedbacks e sugestões da comunidade, mas confesso que nunca imaginei ver a Microsoft abrindo a especificação do produto para podermos opinar de verdade.

Navegando atrás de informações sobre o Visual Studio Team System code name Rosario encontrei um blog falando que junto com o CTP de novembro, a MS liberou algumas especificações do que será implementado e um fórum específico para discutir as features que são importantes para o produto.

Atualmente, existem 3 especificações disponíveis:

  1. Visa melhorar o processo de adição de arquivos no Version Control, justificando que na versão atual a experiência de adicionar arquivos é complexa e tem um workflow não-linear, especialmente para arquivos em localizações não mapeadas.


  2. Foca em melhorar a experiência de achar o history para um item no Version Control. Algumas mudanças serão feitas na janela do ChangeSet para fornecer recursos para rastrear em branches e merges. Isso eu já tinha sentido falta, pois quando você faz um branch, você perde todo o histórico.


  3. Trata da melhora do processo de Labeling no Version Control. A especificação diz que é processo é muito complexo para uma tarefa que deveria ser simples e que muitas opções estão disponíveis para processos triviais.

Todas essas especificações podem ser encontradas em http://msdn2.microsoft.com/en-us/teamsystem/bb936702.aspx e sugestões e comentários sobre as especificações podem ser postadas no fórum específico.

Só pra fechar, gostaria de dizer que achei essa iniciativa da Microsoft fantástica e adoraria que isso fosse estendido a outros produtos / tecnologias como .NET Framework e Entity Framework.


André Dias

sábado, dezembro 08, 2007

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

sexta-feira, dezembro 07, 2007

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

sábado, julho 07, 2007

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

quinta-feira, julho 05, 2007

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

quarta-feira, julho 04, 2007

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