Conceito: Espaços de Trabalho
Um espaço de trabalho é uma área privada que contém o código que um desenvolvedor está codificando e testando em isolamento relativo de outros desenvolvedores e de acordo com os padrões adotados para o projeto.
Relacionamentos
Descrição Principal

Definição

Espaços de trabalho referem-se a áreas 'particulares' nas quais os desenvolvedores podem implementar e testar o código de acordo com os padrões adotados do projeto em relativo isolamento dos demais desenvolvedores. O Gerenciador de Configuração precisa criar um ambiente de espaço de trabalho para cada desenvolvedor do projeto.

Explicação

Um espaço de trabalho oferece a cada desenvolvedor um ambiente consistente, flexível, barato e reproduzível que seleciona e apresenta a versão adequada de cada arquivo. O espaço de trabalho deve poder proporcionar um controle minucioso do compartilhamento e do isolamento. Isso é necessário porque, na maioria dos projetos, os desenvolvedores precisam se isolar das mudanças feitas por outros mas, ao mesmo tempo, devem poder testar se as mudanças que eles fizeram e as mudanças feitas por alguns outros desenvolvedores são compatíveis entre si.

Quando executa a manutenção em liberações mais antigas, um desenvolvedor deve poder ver as antigas versões, os binários, os documentos, os testes, as ferramentas e outros objetos. Nesse caso, o espaço de trabalho funciona como uma 'máquina do tempo', fazendo com que tudo no ambiente, não apenas as origens, apareça como era no passado.

O espaço de trabalho de cada desenvolvedor precisa ficar isolado para fins de edição, de compilação, de teste e de depuração. Entretanto, o isolamento do espaço de trabalho deve ser relativo e não absoluto:

  • Outras pessoas devem poder acompanhar o trabalho de um desenvolvedor e seletivamente integrá-lo ao seu próprio trabalho.
  • Outras pessoas devem poder excluir, até um próximo período de integração, aquelas alterações que se mostrem desestabilizadoras para seus trabalhos.

Um espaço de trabalho pode ser completamente reservado para um determinado desenvolvedor ou compartilhado por uma equipe de desenvolvedores em uma rede.

Além de permitir acesso a versões do código-fonte, um espaço de trabalho deve oferecer armazenamento privado (isolado) dos arquivos gerados durante o desenvolvimento do software:

  • Versões de trabalho (com check-out) dos arquivos-fonte,
  • Executáveis,
  • Outros objetos particulares do espaço de trabalho - código-fonte, subdiretórios de teste e arquivos de dados de teste.

O armazenamento particular de um espaço de trabalho estaria localizado normalmente no diretório pessoal de um desenvolvedor em uma estação de trabalho. Um espaço de trabalho compartilhado por um grupo de desenvolvedores pode ter sua própria área de armazenamento localizada em um servidor de arquivos central. Porém, a localização real do armazenamento privado é basicamente irrelevante. Do ponto de vista do desenvolvedor, o armazenamento particular do espaço de trabalho deve parecer estar totalmente integrado.

O Diagrama mostra 2 espaços de trabalho de integração e um espaço de trabalho privado sobrepostos no Cubo CM.

A figura acima ilustra o conceito de espaços de trabalho particular e integrado no contexto geral do Cubo CM.

Configurações de Trabalho

As configurações de trabalho (perfis de espaço de trabalho) referem-se a subsistemas específicos que compõem um conjunto de tarefas do projeto. Um conjunto de trabalho é uma lista de versões específicas de subsistemas que devem ser consultadas ou modificadas para implementar uma parte do trabalho. Essa lista pode representar todo o sistema ou um subconjunto.

Visualizações

Uma visão oferece acesso a um conjunto de arquivos armazenados no repositório do projeto. Além disso, uma versão oferece acesso a um conjunto adequado de versões desses arquivos:

  • Uma nova visão de desenvolvimento pode oferecer acesso às versões mais recentes dos arquivos.
  • Uma segunda nova visão de desenvolvimento pode conceder acesso às versões que estão sendo utilizadas pela equipe que está trabalhando em uma nova interface de usuário de seu produto.
  • Uma visão de manutenção pode fornecer acesso às versões dos arquivos que foram utilizados para compilar uma determinada liberação do produto.

Um espaço de trabalho, também chamado de visão, permite que os desenvolvedores façam e testes mudanças reservadamente e, depois, compartilhem as modificações com os demais membros da equipe. Há dois tipos de visualizações:

  • Visualizações de Captura Instantânea
  • Visualizações Dinâmicas

Uma visualização de captura instantânea fornece ao desenvolvedor um ambiente de trabalho estável e sem alterações. Ela pode ser comparada a uma árvore de diretórios de um computador. Uma visão de imagem é preenchida com cópias das versões adequadas dos arquivos de um ou mais repositórios do projeto. Algumas pessoas utilizam o termo "modo seguro" para essa árvore de diretórios. Quando um desenvolvedor deseja ver as mudanças feitas por outros membros da equipe, ele atualiza a visão. Este estilo de trabalho é caracterizado como um modelo pull, uma vez que depende da extração ativa de informações relevantes, em vez de disponibilizá-las de imediato por meio de mecanismos de atualização automática.

Uma visualização dinâmica é uma estrutura de dados virtuais, pois parece conter todos os dados de desenvolvimento. As visões dinâmicas não criam cópias locais dos arquivos, confiando nas atualizações imediatas feitas na rede. As visões dinâmicas podem ser a melhor opção nas seguintes situações:

  • O espaço em disco no cliente é limitado
  • Você deseja se beneficiar das vantagens oferecidas pelo compartilhamento de objetos
  • A equipe de desenvolvimento deve trabalhar com as versões mais recentes do código. Este recurso é particularmente útil para fins de integração, que requer a versão mais recente de um software.