DevMedia no Tech Ed US – Cobertura do maior evento para desenvolvedores Microsoft

Report#4

Prezados leitores

Continuando nossa cobertura do Tech Ed 2006, comento neste report os detalhes e novidades que vi nas palestras que assisti até aqui. Gostaria de poder comentar todas que presenciei até agora, mas isso exigiria um livro! Dessa forma, selecionei as palestras que achei mais interessante e vou destacar os aspectos-chave, colocando também meus comentários e opinião pessoal.

VSTS

Ultimamente temos ouvido falar muito em VSTS – Visual Studio Team System. A primeira vista, para quem nunca teve o contato com a ferramenta / tecnologia, pode assustar-se com a variedade de novos termos, principalmente se sempre trabalhou apenas com desenvolvimento, deixando de lado a área de análise e arquitetura de lado. Antes de falar o que vi por aqui, vou tentar introduzir o VSTS e MSF em um parágrafo.

O MSF (Microsoft Solutions Framework), é um conjunto de regras, disciplinas e modelos para criar soluções .NET otimizadas. O MSF define como um software deve ser feito, do início ao fim, com todos os processos e milestones que um projeto deve passar (definição, planejamento, design, desenvolvimento, teste e distribuição). Define também como uma equipe deve ser montada, como riscos de um projeto podem ser analisados, como capturar informações, levantar/refinar requisitos e por aí vai. Ou seja, é basicamente uma “receita de bolo”: faça o que ali está escrito e dificilmente seu projeto fracassará! O VSTS é a tecnologia que permite utilizar o MSF em projetos como Visual Studio 2005. Dessa forma, membros de uma equipe, sejam desenvolvedores, testers, arquitetos etc., podem usar o VS para trabalharem em equipe.

 

Assisti a duas palestras sobre VSTS: “Visual Studio 2005 Team Foundation Server: Applying Version Control, Work Item Tracking and Team Build to Your Software Development Project”, ministrada por Brian Harry, e “Visual Studio 2005 Team System and Microsoft Solution Framework: Implementing an Agile or CMMI Process”, por Randy Miller.

Foram apresentados os Roles do MSF, ou seja, os papéis de uma equipe. Temos os seguintes roles: Infrastructure Architect, Business Stakeholder, Project Manager, Tester, Developer e Solution Architect. O VSTS engloba a seguintes funcionalidades:

- Work Item Tracking: permite que você adicione no VSTS solicitações de mudanças, bug reports e tarefas. Achei interessante que o palestrante mostrou como integrar o item tarefas com o MS Project. Dessa forma, podemos visualizar um cronograma completo do projeto, custos e recursos alocados;

- Version Control: permite o controle de versão de código-fonte. Usa ASP.NET, SQL Server 2005 e Web Services para prover essa funcionalidade. Novos recursos incluem check-in integrado, shelving e um explorer;

- Build Automation: Compilações automáticas. As configurações do que deve ser feito durante um processo de compilação são gravadas em arquivo XML. Semelhante ao Ant;

- Project Portal: permite acesso via Web a uma série de informações sobre o projeto;

- Reporting: permite gerar relatórios de todos os itens anteriores.

O VSTS permite que equipes de desenvolvimento trabalhem a distância. Citou como exemplo a própria MS, que tem uma equipe divida em vários locais do mundo, incluindo Redmond, Índia e China, porém trabalhando de forma integrada, graças ao VSTS. O projeto citado, segundo o palestrante, tem 18 milhões de arquivos!

 

Resumindo, o VSTS é uma grande ferramenta para colaboração e trabalho em equipe. Permite que gerentes de projeto tenham uma visão detalhada do andamento de um projeto. Arquitetos de software e infra-estrutura podem se comunicar através de um único modelo. Desenvolvedores têm uma gama enorme de novos recursos integrados. A equipe de teste tem um ambiente integrado para criação de testes.

 

 

C# 2.0

Na palestra “Visual C#: Directions in Language Innovation” de Mads Torgersen, foram apresentados os novos recursos do C# 2.0, e também destaque para algumas das novidades do C# 3.0. Resumiu a evolução da linguagem nos últimos anos:

Ontem: Microsoft Visual C# 1.0 = Objects

Hoje: Microsoft Visual C# 2.0 = Generics

Amanhã: Microsoft Visual C# 3.0 = Queries

O primeiro exemplo mostrou o uso de Generics, um poderoso novo recurso da linguagem. Uma breve introdução: quando usamos coleções em .NET, como ArrayList, podemos adicionar uma série de objetos dos mais variados tipos a essa coleção. Como o tipo interno usado na lista é System.Object, há uma perda de performance quando os objetos precisam ser acessados, porque normalmente será necessário fazer um typecast. Usando generics, podemos definir uma coleção “genérica”, que não possui um tipo explicito quando da sua declaração. O tipo é passado normalmente quando vamos chamar o construtor da classe (new), e então o compilador é capaz de compilar a classe “on the fly” com o tipo especificado. Nesse caso, o processo de boxing é otimizado, justamente por não ser necessário o typecast. Ganho enorme de performance. O exemplo dado foi bem interessante. Na figura abaixo, veja a utilização de um Stack (pilha), uma coleção de inteiros nesse caso. O palestrante adicionou então uma string, e demonstrou um erro de conversão:

 

A seguir, transformou a Stack para usar Generics. Observe que o tipo é passado no momento da criação, circulei na figura abaixo:

 

 

Coloquei abaixo um exemplo interessante de como usar Generics, semelhante ao apresentado:

 

// type parameter T in angle brackets

public class GenericList<T>

{

    // The nested class is also generic on T

    private class Node

    {

        // T used in non-generic constructor

        public Node(T t)

        {

            next = null;

            data = t;

        }

 

        private Node next;

        public Node Next

        {

            get { return next; }

            set { next = value; }

        }

       

        // T as private member data type

        private T data;

 

        // T as return type of property

        public T Data 

        {

            get { return data; }

            set { data = value; }

        }

    }

 

    private Node head;

   

    // constructor

    public GenericList()

    {

        head = null;

    }

 

    // T as method parameter type:

    public void AddHead(T t)

    {

        Node n = new Node(t);

        n.Next = head;

        head = n;

    }

 

    public IEnumerator<T> GetEnumerator()

    {

        Node current = head;

 

        while (current != null)

        {

            yield return current.Data;

            current = current.Next;

        }

    }

}

 

Usando a lista (observe a indicação do tipo no construtor):

 

class TestGenericList

{

    static void Main()

    {

        // int is the type argument

        GenericList<int> list = new GenericList<int>();

 

        for (int x = 0; x < 10; x++)

        {

            list.AddHead(x);

        }

 

        foreach (int i in list)

        {

            System.Console.Write(i + " ");

        }

        System.Console.WriteLine("\nDone");

    }

}

 

Outro recurso do C# é o suporte a classes parciais. O recurso permite que a definição e implementação de uma classe seja divida em mais de um arquivo. Amplamente utilizado pelo ASP.NET 2.0 e Windows Forms 2.0, onde o código de design e implementação ficam separados porém são compilados como uma única classe. É por esse motivo que não são necessárias mais as definições de atributo para os controles ASP.NET no código C#, representando elementos do arquivo ASPX. Abaixo um exemplo, observe que ambas as classes têm o mesmo nome, a compilação final resultará em uma única classe com todos os membros unificados:

 

public partial class Employee

{

    public void DoWork()

    {

    }

}

 

public partial class Employee

{

    public void GoToLunch()

    {

    }

}

 

Destaco ainda outros recursos do C# 2.0: nullable types e classes estáticas.

C# 3.0

Abaixo enumero algumas das novidades do C# 3.0:

  • Implicitly typed local variables: uma nova palavra reservada, chamada “var”, vai permitir a declaração e inicialização de uma variável sem tipo. O Compilador determinada o tipo. Exemplo

var num = 1; // o tipo “num” será inteiro

  • Anonymous types: permite criar uma classe sem explicitamente definir sua estrutura. O compilador define o tipo no momento da compilação. Exemplo:

new {revista="MSDN Mag", Evento="TechEd", Language="C#"}

  • Object and collection initializers: permite incluir um inicializador para definir valores padrão para membros de objetos e coleções. Exemplo:

public class Magazine

{

public int EditionNumber;

public int Month;

}

 

var Test = new Magazine { EditionNumber = 31, Month = 6} ;

  • Lambda expressions: confesso que esse me deixou espantado! Em C#, métodos podem receber um delegate como parâmetro, ou seja, um ponteiro para um método. Agora é possível passar a própria implementação do método como parâmetro. A figura abaixo mostra o exemplo dado na palestra:

  • Query expressions: esse recurso também é conhecido como LINQ (Language Integrated Query), e permite que você escreva código C# semelhante a SQL. O exemplo define uma classe que guarda informações sobre a revista MSDN Magazine. Depois, inicializamos a classe e vamos um SELECT (isso mesmo!) para retornar somente as revistas cuja edição é menor que 30:

public class Magazine

{

public int EditionNumber;

public int Month;

}

List< Magazine > Mags = ... ;

 

var Mags2 =

  from Ed in Mags

  where Month < 30

  select (Ed.EditionNumber, Ed.Month)

 

Conclusão

Prezados leitores, espero que tenham apreciado as informações que trouxe nos reports. Como vocês puderam ver, procurei não só dizer “assisti a palestra X e achei legal”, mas trazer o que realmente foi mostrado, com exemplos, códigos e comentários. Sem dúvida foi um grande evento, onde pudemos conhecer o que vem pela frente e assim planejar nossos futuros softwares para usufruir das tecnologias do amanhã. Em uma área dinâmica e em constante crescimento/evolução como a nossa, é fundamental se manter atualizado, e esse é objetivo da MSDN Magazine. Como editor, estarei comprometido em trazer muita informação sobre essas novas tecnologias, como poderão comprovar nas próximas edições, em especial desenvolvimento para Windows Vista, WinFX/.NET 3.0, Windows Presentation Foundation, Windows Communication Foundation e VSTS. Enviem seus comentários e sugestões diretamente para meu email, será um prazer ouvir a opinião do leitor.

 

Um grande abraço e sucesso nos projetos com VSTS e WinFX/.NET 3.0!

 

Até a próxima!