Comunique-se e Colabore com o Visual Studio Team System 2008 White Paper Maio de 2008 Para obter as últimas informações, visite o site www.microsoft.com/teamsystem As informações contidas neste documento representam a visão atual da Microsoft Corporation sobre os temas discutidos na data da publicação. Como a Microsoft deve responder às mudanças das condições de mercado, este documento não deve ser interpretado como um compromisso da parte da Microsoft, e a Microsoft não pode assegurar a exatidão de qualquer informação apresentada após a data da publicação. Este white paper destina-se a fins informativos apenas. A MICROSOFT NÃO FORNECE NENHUMA GARANTIA, EXPRESSA, IMPLÍCITA ou ESTATUTÁRIA, QUANTO ÀS INFORMAÇÕES NESTE DOCUMENTO. O cumprimento de todas as leis pertinentes de direitos autorais é de responsabilidade do usuário. Sem limitar os direitos sob o direito autoral, nenhuma parte deste documento pode ser reproduzida, armazenada em, ou inserida em um sistema de recuperação de dados, ou transmitido de qualquer forma ou por qualquer meio (eletrônico, mecânico, fotocópia, gravação ou outro) ou para qualquer fim, sem a permissão expressa por escrito da Microsoft Corporation. A Microsoft pode deter as patentes, as solicitações de patentes, as marcas comerciais, os direitos autorais ou outras propriedades intelectuais pertinentes ao objeto deste documento. Salvo expressamente disposto em qualquer contrato de licença escrito da Microsoft, o fornecimento deste documento não confere a você qualquer licença em relação a essas patentes, marcas comerciais, direitos autorais ou outras propriedades intelectuais. © 2008 Microsoft Corporation. Todos os direitos reservados. Microsoft, Visual Studio e SharePoint são marcas registradas do grupo de empresas da Microsoft Todas as outras marcas registradas são propriedade de seus respectivos proprietários. SUMÁRIO Introdução ................................................................................................ 1 Desafios de Comunicação ...................................................................... 2 Visual Studio Team System 2008 Team Foundation Server ............... 3 Relacionamentos ..................................................................................... 7 Conclusão ................................................................................................ 9 Sobre o Autor......................................................................................... 10 INTRODUÇÃO Você se lembra do jogo ―Telefone Sem Fio‖? Você diz algo a segunda pessoa, que diz algo a terceira pessoa e assim por diante até a mensagem voltar para você. A mensagem nunca é aquela que você disse originalmente a segunda pessoa. Em algum ponto do jogo alguém ouviu o que você disse de maneira diferente ou transmitiu diferentemente. O desenvolvimento de software é muito parecido com isso. Projetos fracassam (ou são desafiados) a um índice altíssimo. As razões para essas falhas podem ser ligadas a muitas coisas — requisitos insuficientes, qualidade insatisfatória, mudanças no escopo, questões de usabilidade ou outras. A causa subjacente da maioria dessas questões é que as equipes não se comunicam bem e não têm a mesma compreensão das questões, o que dificulta para elas trabalharem bem umas com as outras. Em quase todos os casos, essas são questões que surgem entre a equipe de desenvolvimento e os clientes. Seja você um gerente de projeto, arquiteto, desenvolvedor, usuário final, ® ® testador ou outro participante interessado, o Microsoft Visual Studio Team System 2008 ajuda a melhorar o trabalho de desenvolver software. Isso é feito através de um fluxo de informações livre e aberto entre todos os envolvidos em uma equipe de desenvolvimento. White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 1 DESAFIOS DE COMUNICAÇÃO Processo de Desenvolvimento O processo de desenvolver um sistema começa com o proprietário de uma empresa identificando requisitos de alto nível. Depois um perito no assunto conversa com um analista, que identifica os requisitos detalhados e os documenta. O perito no tema pode ou não ser alguém que vai usar o sistema. Um arquiteto projeta o sistema com base em tecnologia, requisitos do usuário e requisitos não-funcionais e fornece a arquitetura aos desenvolvedores. O analista cria uma especificação funcional (uma tradução do requisito em algo que um desenvolvedor possa implementar) e a entrega ao desenvolvedor. O desenvolvedor trabalha nos requisitos. Caso tenha um problema, o desenvolvedor conversa com o analista, que conversa com o perito no assunto para obter uma resposta. Quando o desenvolvedor termina, o código é entregue a um testador para testes. Depois do lançamento, a aplicação é entregue a Operações para gerenciá-la. Todos comunicam o status ao gerente de projeto, e este faz relatórios através da cadeia de gerenciamento. A Figura 1 mostra um exemplo simples da comunicação da equipe. Figura 1 – Equipe de desenvolvimento Como qualquer pessoa que já participou de uma equipe de desenvolvimento pode atestar, informações podem tornar-se inexatas ou obsoletas quando White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 2 atingem o destinatário pretendido — se chegarem àquela pessoa. Tentar comunicar status se torna uma tarefa de tempo integral em si mesma já que muita gente trabalha em coisas diferentes e pessoas que queiram rastrear questões específicas têm dificuldades nisso. É aí que o Team System entra e se destaca. Tempo Perdido Não só esse processo inteiro leva tempo, mas as pessoas demoram muito tentando comunicar informações de forma eficiente. Veja o Gerente de Projeto — todas as semanas ele precisa do status daquilo em que os desenvolvedores estão trabalhando, quanto tempo trabalharam naquilo (ou quanto falta até a conclusão), se já terminaram e se há algo os impedindo. Desenvolvedores normalmente não oferecem essas informações voluntariamente — o Gerente de Projeto tem de rastreá-las e, pior, criar uma ® planilha de Microsoft Excel para cada um deles, enviar por e-mail e esperar uma resposta. Ou, imagine o desenvolvedor que começa a trabalhar em um requisito apenas para descobrir que houve mudanças, mas ninguém o informou! Isso acontece frequentemente. O desenvolvedor deve corrigir ou alterar trabalho provocando uma alteração em uma grande porção do cronograma do projeto porque alguém não falou com outro alguém. E o gerente que quer o status do projeto neste momento? Ele rastreia o Gerente de Projeto, que então tem de rastrear todo o resto da equipe para um relatório de status improvisado, o que pode levar um bom tempo, dependendo da equipe. Isso desperdiça o tempo do Gerente de Projeto, além do de todos os desenvolvedores que têm de parar de trabalhar para calcular seu status. E nem pense nas reuniões de status semanais. Essas coisas podem levar uma hora de preparação por desenvolvedor, além de uma reunião que demora uma hora. Assim, em uma equipe de oito pessoas isso significa oito horas de preparação mais oito horas na reunião (8 pessoas X 1 hora) para um total de 16 horas perdidas por semana em reuniões de status! White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 3 VISUAL STUDIO TEAM SYSTEM 2008 TEAM FOUNDATION SERVER Visão Geral Você não pode ter um desenvolvimento de software bem-sucedido sem comunicação efetiva entre participantes e membros da equipe de desenvolvimento. A Microsoft criou o Team System para lidar com muitas dessas lacunas de comunicação na maneira como muitos dos participantes de um projeto de desenvolvimento de software trabalham — a Microsoft o construiu para a equipe inteira, não apenas para os desenvolvedores. Isso significa que o Team System não se impõe a você, ele trabalha com você. A Microsoft projetou o Team System para resolver vários problemas com o processo de desenvolvimento de software. Eles incluem controle de versão, questões de qualidade e de integração e um local central para armazenar informações. Resolver esses problemas individuais não tem sentido sem capacidades de colaboração e comunicação eficientes. Através de um site ® ® do Microsoft SharePoint para colaboração e compartilhamento, o Team System Web Access para acesso rápido a informações detalhadas do Visual Studio Team System 2008 Team Foundation Server, o fluxo de trabalho fornecido pelo Team Foundation Server e os relatórios fornecidos pelo Microsoft SQL Server™ Reporting Services, o Team System atende e supera a meta de comunicação aberta e transparente. Acessando Informações Uma das dificuldades com outras ferramentas de gerenciamento de projeto é poder acessar informações. Algumas ferramentas armazenam uma grande quantidade de informações, mas não há como se acessar aquelas informações facilmente — é necessária uma grande quantidade de trabalho personalizado. Imediatamente, o Team Foundation Server expõe informações através de vários mecanismos para permitir a membros da equipe e outros interessados acessar os dados que desejarem quando quiserem. Desenvolvedores usarão primariamente o Team Explorer, que é um suplemento da IDE do Visual Studio. Através do Team Explorer eles podem criar e consultar itens de trabalho, incluir, editar e exibir documentos armazenados no SharePoint e exibir relatórios do SQL Server Reporting Services. Gerentes de projeto podem usar diretamente o site do SharePoint, que contém documentos e relatórios ou podem usar ferramentas com que ficam ® confortáveis, como o Microsoft Excel e o Microsoft Project . Com o Excel e o Project, o gerente de projeto pode incluir e consultar itens de trabalho, exibir seu status e criar uma estrutura de divisão de trabalho com base nos itens de trabalho no Team Foundation Server. Além disso, ele pode atualizar dados de forma dimensional entre o Team Foundation Server e o Excel ou Project. Agora imagine que em vez de ser designado a um projeto, um White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 4 gerente de projeto seja designado a três! Por causa dos ganhos de eficiência você não precisa necessariamente de uma relação de um para um entre gerentes de projeto e projetos. Analistas, usuários e outros participantes provavelmente obterão suas informações a partir de dois locais — SharePoint e/ou Team System Web Access. O site do Team System Web Access é projetado para imitar a funcionalidade do Team Explorer no navegador. Isso significa que usuários podem rastrear questões que lhes são importantes e obter um status atualizado sem ter de escrever e–mails e esperar resposta do gerente de projeto ou desenvolvedor. Além disso, você pode usar os recursos do Team Foundation Server, SharePoint e do SQL Server Reporting Services para obter atualizações automáticas quando documentos e itens de trabalho mudarem. Você pode fazer o Team System executar relatórios com base em programação ou quando dados mudarem! O Team Foundation Server também suporta ―alertas‖, que enviam um e-mail a um usuário (ou serviço da Web) com informações sobre mudanças em itens de trabalho, compilações ou outras informações. Os alertas podem ser filtrados para envio e atualização quando eventos específicos ocorrerem. Por exemplo, você pode receber um e-mail sempre que alguém atribuir um item de trabalho a você ou os testadores podem ser notificados quando um item de trabalho estiver pronto para teste. Isso ajuda você a comunicar status importante rápida e eficientemente às pessoas que precisam dele. Com essas ferramentas em vigor, acessar, compartilhar e atualizar dados é mais fácil que nunca e ajuda a facilitar o fluxo de informações. E, se quiser e nenhum dos métodos acima funcionar para você, pode escrever sua aplicação para recuperar dados na API cliente totalmente acessível, camada de servidor ou usar uma das várias ferramentas de terceiros do mercado. Itens de Trabalho No âmago de todas as comunicações dentro do Team System está o item de trabalho. Itens de trabalho contêm informações que podem ser relacionadas com outras. As outras informações podem tomar a forma de código, documentos vinculados ou anexados, páginas da Web, notas ou outros itens de trabalho. Itens de trabalho também são associados com estados — isto é, podem mover-se de um estado a outro (ao longo de um caminho definido) que permite a você passar trabalho de uma pessoa ou grupo para outro (consulte a Figura 3 para um exemplo). A Figura 2 mostra uma lista de itens de trabalho e um único item de trabalho selecionado na lista. Itens de trabalho podem ser qualquer coisa e dependem muito do Modelo de Processo que você seleciona como a base para sua metodologia. Alguns dos tipos padrão de itens de trabalho disponíveis incluem: Requisito, Tarefa, Bug, Solicitação de Mudança, Risco e outros. Você também pode White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 5 usar o Editor de Modelo de Processo para criar tipos de item de trabalho personalizados. Figura 2 – Itens de trabalho O status do item de trabalho suporta o processo de trabalho pela identificação de onde no fluxo de trabalho o item de trabalho se encontra. A Figura 3 mostra os estados e transições entre estados de Tarefa. Os estados são mostrados em ovais azuis e as transições permissíveis são indicadas pelas setas vermelhas. O texto indica os motivos pelos quais uma transição pode ocorrer entre dois estados. Figura 3 – Estado de tarefa e razões de transição Através desse processo simples, qualquer pessoa pode acompanhar uma tarefa (os estados e transições são ligeiramente diferentes dependendo do tipo de item de trabalho, mas todos seguem o mesmo tipo de padrão). Em qualquer ponto, um membro de equipe pode incluir notas em uma tarefa e acrescentar motivos detalhados. Cada item de trabalho mantém um histórico completo, assim todas as mudanças no item de trabalho são rastreadas. Essas informações são usadas nos relatórios incluídos no Team System ou você pode criar relatórios personalizados para consultá-las. E os itens de White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 6 trabalho podem ser reatribuídos a usuários diferentes para ajudar a mover o processo adiante. Consultando Status Itens de trabalho são ótimos para transmitir informações, mas como isso se traduz em fornecer, digamos, status ao gerente do projeto? O gerente do projeto pode usar o Excel para consultar o Data Warehouse do Team Foundation Server através de uma interface fácil de usar para recuperar informações ad-hoc sobre o status do projeto. Por exemplo, ele pode encontrar tudo em que todos tenham trabalhado durante uma determinada semana. Junto com isso, o gerente do projeto pode ver o status de todos os itens de trabalho (requisito, tarefa, bug, etc) sem que os desenvolvedores tenham de fornecer nenhuma informação adicional! Para atribuir trabalho, o processo funciona da mesma forma. O gerente de projeto atribui itens de trabalho aos desenvolvedores, e estes podem executar os itens Meu Trabalho para entender em que precisam trabalhar e qual é a prioridade de tudo! Informações Obsoletas Como mencionado anteriormente, você pode vincular itens de trabalho — inclusive hiperlinks que apontem para documentos em um site do SharePoint, site da Web ou compartilhamento de servidor. Com essa funcionalidade, usuários e analistas podem trabalhar em documentação e armazená-la no site do SharePoint para que os desenvolvedores acessem sempre a versão mais recente. E como o SharePoint armazena o histórico do documento, você pode exibir as modificações nos documentos, se necessário. SharePoint e Acesso à Web Muito da comunicação se trata de pessoal fazendo o que é natural e fácil para elas. Se os usuários tiverem de mudar demais seu hábitos para alcançar um objetivo, é pouco provável que o façam. Por isso, a Microsoft integrou o SharePoint com o Team System. Diretamente de dentro do Team Explorer, desenvolvedores podem incluir, exibir e editar documentos no site da equipe do SharePoint (que é criado para cada novo Projeto em Equipe). Isso também potencializa a funcionalidade embutida do SharePoint, que permite às pessoas colaborar em documentos. Vários usuários podem examinar e editar o mesmo documento ao mesmo tempo. Usuários podem fazer perguntas e respondê-las em tempo real e fazer as alterações apropriadas no documento. Todos trabalham com a mesma versão e, literalmente, na mesma página. White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 7 RELAÇÕES A comunicação se encontra no centro das relações — com boa comunicação você pode ter boas relações, com comunicação ruim não há nem esperança. O Team System ajuda a abrir linhas de comunicação facilitando o fluxo de informações entre diferentes equipes. Desenvolvedores e testadores frequentemente têm dificuldade em comunicar-se porque não fornecem informações úteis uns aos outros. Desenvolvedores e usuários têm um problema de ―perda na tradução‖ porque as informações que os usuários fornecem são muito filtradas antes de chegar aos desenvolvedores. Desenvolvedores e DBAs não conversam até que seja tarde demais no processo, e então acontecem as discordâncias. Tudo isso é prejudicial para uma boa equipe de trabalho e o Team System pode ajudar a resolver todas essas questões. Desenvolvedores e Testadores Parece que há uma antipatia natural entre desenvolvedores e testadores. Os testadores quebram o código dos desenvolvedores e dizem a eles que o fizeram, mas, muito pouco frequentemente podem fornecer informações precisas sobre o que ou como quebraram. Os desenvolvedores, então, não podem reproduzir o problema e ficam frustrados tentando o que quer que tenha quebrado. Um ciclo de lançamento típico pode ocorrer parecido com isso: Os desenvolvedores enviam o código completo aos testadores e dizem: ―Funciona. Terminamos.‖ Os testadores testam o código e, naturalmente, encontram bugs. Os testadores então devolvem o código aos desenvolvedores para correção e o processo se repete. Hoje, isso é feito com e-mail, compartilhamentos de rede, controle de versão, reuniões e telefonemas. As informações fornecidas pelos testadores ou desenvolvedores geralmente são incompletas, o que leva a mais frustração. O que falta é um mecanismo simples para comunicar a natureza do bug, onde ele está e que teste (e etapa do teste) fez o código falhar. O Team Foundation Server fornece esse mecanismo de rastreamento e comunicação. Como os desenvolvedores e testadores podem associar suítes de teste com um requisito, cada grupo pode examinar os testes do outro. Quando um teste falha, os resultados podem ser anexados a um item de trabalho e, em uma etapa, os desenvolvedores sabem a que requisito o teste é associado, que teste falhou e podem ver os resultados do teste (inclusive o rastreio de stack). Nenhum telefonema, reunião, e-mail ou transmissão de arquivos via compartilhamento. E esse processo funciona nos dois sentidos se os desenvolvedores usarem testes de unidade. Os testadores podem exibir a suíte de testes que os desenvolvedores criaram e entender porque não perceberam o problema (ou não criaram um White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 8 teste ou o teste dos desenvolvedores falhou). De qualquer maneira, esse mecanismo simples de usar itens de trabalho como o canal de comunicação fornece informações muito necessárias e melhora as relações de trabalho entre desenvolvedores e testadores! Usuários e Desenvolvedores Usuários e desenvolvedores também podem discordar. Considere o que acontece quando um usuário relata um bug. Ele espera ver providências a respeito, mas, dependendo do bug, equipes de projeto podem demorar a responder às necessidades do usuário. Algumas equipes de projeto não fornecem feedback de nenhum tipo a menos que seja pedido especificamente. Um novo recurso do Team System 2008 é a capacidade de qualquer pessoa sem uma Licença de Acesso para Cliente (CAL) inserir um item de trabalho e exibir ou editá-lo. Isso significa que qualquer pessoa pode enviar uma solicitação de bug ou de alteração (através do Team System Web Access) e observar seu status à medida que ela avança pelo sistema ou pode descobrir se o bug foi adiado. Ao inscrever-se em eventos – o que notifica os usuários sobre mudanças de status por e-mail – o Team System ajuda automaticamente a manter você informado sobre o status atual. Isso permite aos usuários manter-se atualizados sobre o progresso da equipe de desenvolvimento e abre o Team System a uma classe inteira de pessoas que anteriormente não eram licenciadas para usar o Team System. Administradores de Bancos de Dados e Desenvolvedores Como com usuários e testadores, existe um desligamento típico entre os Administradores de Bancos de Dados (DBAs) e desenvolvedores. As discussões geralmente ocorrem porque os desenvolvedores escrevem código SQL insatisfatório, enviam-no aos DBAs em um e-mail e pedem que estes o implementem. Os DBAs apenas registram as mudanças nos scripts enviados por e-mail. Se vários desenvolvedores estiverem trabalhando em um projeto, o DBA geralmente tem de agrupar os scripts que recebeu para fazer com que sejam executados corretamente. Isso leva a inúmeros problemas, inclusive uma falha quase automática da Sarbanes-Oxley e outras medidas de conformidade a normas. No caso do Visual Studio Team System 2008 Database Edition, o uso de itens de trabalho elimina totalmente esses problemas. Os recursos de controle de versão do Team System ajudam a gerenciar e entender mudanças — e o Team System ajuda equipes a comunicar mudanças, especialmente com o Database Edition. Agora desenvolvedores e DBAs podem trabalhar juntos para entender o impacto de mudanças e gerar scripts sem precisar de trocas de e-mails ou que o DBA banque o detetive para descobrir as mudanças que o desenvolvedor realmente quer. White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 9 CONCLUSÃO O Visual Studio Team System 2008 traz muitas mudanças desejadas e resultados positivos ao processo de desenvolvimento. Este documento discutiu o efeito das ferramentas do Team System no aperfeiçoamento (ou, na verdade, habilitação) da comunicação entre membros de equipe para eliminar ineficiências que existem com ambientes atuais. Conforme examina a variedade de ferramentas de gerenciamento de projetos disponíveis hoje, como membro de equipes de desenvolvimento ou gerente, você precisa perguntar-se se as ferramentas que está considerando são integradas e fáceis de usar. E, caso sejam, se oferecem benefícios suficientes. Nenhuma outra ferramenta no mercado oferece esse nível de integração — tanto na ferramenta como para as equipes usando-a. O Team System reúne equipes através de comunicação aberta e colaboração fácil entre membros de equipe, o que inclui pessoas no processo, em vez de excluí-las. White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 10 SOBRE O AUTOR Jeff Levinson é o Lead de Prática de Gerenciamento do Ciclo de Vida da Aplicação na Northwest Cadence e é especializado no Team System e na melhoria de processos. Você pode entrar em contato com ele pelo e-mail [email protected]. Este documento foi desenvolvido em parceria com a A23 Consulting. White Paper: Comunicação e Colaboração com o Visual Studio Team System 2008 11