Hoje em dia, o mercado tem exigido cada vez mais a entrega de produtos de software de altíssima qualidade, que respondam às necessidades do negócio em curto prazo e com o menor custo possível. Esse cenário determina que a engenharia de software gerencie gradativamente todas as fases do ciclo de vida da aplicação de uma forma que, ao longo de todo o processo,TI e clientes atuem de forma extremamente colaborativa.

A exigência de mudanças rápidas às necessidades do negócio promove o desenvolvimento distribuído de software, uma vez que nem sempre é possível que todo time envolvido trabalhe junto.

Nesse contexto, as ferramentas de gestão de configuração e mudança têm papel fundamental no gerenciamento dos produtos de software, desde o surgimento da necessidade do usuário até que ele se torne obsoleto para o negócio.

Antes de falarmos sobre os benefícios que uma ferramenta de gestão de configuração e mudança traz para o ciclo de vida de uma aplicação, é necessário entendermos o conceito de Gerenciamento do Ciclo de Vida de uma Aplicação, ou, em inglês, Application Lifecycle Management (ALM).

ALM

O ciclo de vida de uma aplicação é iniciado no momento em que uma necessidade é levantada, passando desta à criação e implantação em produção e, finalmente, terminando no momento em que se torna obsoleta para a organização ou para o mercado.

Assim, podemos dividir o ALM em três fases: Governança, Desenvolvimento e Operação, como mostra a Figura 1.

As 3 fases do Gerenciamento do
Ciclo de Vida da Aplicação

Figura 1. As 3 fases do Gerenciamento do Ciclo de Vida da Aplicação

  • Governança: fase que abrange desde a tomada de decisão para atender as necessidades do negócio até o gerenciamento de portfólio e catálogo das aplicações. Está presente durante todo o ciclo de vida;
  • Desenvolvimento: fase que cria a aplicação propriamente dita. Tem início antes da implantação em produção e, após, sofre modificações ao longo do ciclo de vida (iterações) para atender a correções, mudanças nas necessidades do negócio ou a normas de legislação;
  • Operação: fase que tem início pouco antes da implantação e responsável por gerenciar acessos, incidentes, problemas e prover suporte ao usuário até o momento em que a aplicação se torne obsoleta e deixe de fazer parte do catálogo de ativos.

O que é gerenciamento de configuração de software

Gerenciamento de Configuração de Software (GCS) ou, em inglês, Software Configuration Management (SCM) é uma disciplina da engenharia de software responsável por gerenciar a evolução do produto de software, das fases inicias de concepção à entrega, e também da manutenção deste. Entende-se por produto de software o conjunto de programas, artefatos, códigos-fonte e demais documentos desenvolvidos ao longo do processo de entrega de software ao cliente.

Porque é importante realizar a Gerência da Configuração de Software

A principal razão para se efetuar a GCS é rastrearas mudanças e iterações do produto de software ao longo de todo o ciclo de vida. Este controle é necessário a fim de desenvolver e manter a qualidade dos produtos de software, de modo a manter a satisfação do cliente, entregando um produto que atenda a necessidade do negócio, reduzindo custo, esforço e tempo.

A GCS fornece um ponto comum entre as atividades de planejamento, desenvolvimento e implementação do produto de software, permitindo a essa estrutura definir mecanismos de controle (mudança) necessários para coordenar atividades paralelas entre as diferentes equipes do projeto.

Quais são os benefícios do gerenciamento da configuração de software

A GCS deve ser usada em todos os projetos de software, independentemente do tamanho, escopo ou complexidade, pois um sistema de GCS:

  • Ajuda a tomada de decisões baseadas em linhas de base;
  • Mostra a evolução de itens de trabalho, artefatos, código-fonte e documentação;
  • Rastreia tarefas concorrentes, pré-condições e dependências;
  • Permite que todas as partes interessadas tenham uma visão do andamento completo do produto de software;
  • Permite visualizar e definir que itens de configuração serão priorizados;
  • Gerencia as iterações e releases;
  • Garante que somente mudanças aprovadas e que estejam em acordo com as necessidades serão implementadas;
  • Garante que as documentações reflitam as mudanças;
  • Permite avaliar o impacto de mudanças; e
  • Previne que mudanças não autorizadas sejam implementadas.

Dentre os softwares que auxiliam na gestão do desenvolvimento, planejamento e progresso dos produtos de trabalho há destaque para o Rational Team Concert (RTC), uma ferramenta desenvolvida e mantida pela Rational, uma subdivisão da IBM.

Ao longo deste artigo será apresentado como a ferramenta está estruturada e as vantagens de sua utilização como solução de gerenciamento do ciclo de vida de aplicações ágeis.

Apresentando o RTC

O RTC é uma ferramenta construída sob a plataforma IBM Jazz (plataforma que permite a integração entre ferramentas e times de desenvolvimento) e tem por finalidade priorizar a colaboração entre seus usuários, bem como o desenvolvimento integrado, definir processos, gerenciar mudanças, rastrear defeitos e tarefas, controlar fontes e fornecer alta visibilidade sobre as atividades do projeto e o progresso das equipes. A ferramenta ora analisada facilita o planejamento de iterações e a execução de atividades, possibilitando assim entregas rápidas,contribuindo para maior produtividade e eficiência no desenvolvimento do produto de software. Sua estrutura pode ser vista na Figura 2.

Como está estruturado o
RTC

Figura 2.Como está estruturado o RTC

Pode ser acessada sob três interfaces: client Eclipse, client Microsoft Visual Studio ou Web, e cada uma com suas particularidades, a saber:

  • As interfaces Eclipse e Visual Studio oferecem ao desenvolvedor um ambiente integrado para construir e entregar artefatos;
  • Já a interface Web possibilita ao usuário acessar o servidor, visualizar dashboards e criar, visualizar e modificar planos.

Em comum, todas as interfaces possibilitam criar e modificar áreas de projeto, consultas e itens de trabalho, dentre outros elementos que veremos a seguir.

Uma ferramenta colaborativa

O RTC permite que todos os membros de uma Área de Projeto (AP) sejam atualizados em tempo real sobre todos os eventos. A criação de um novo item de trabalho, ou uma alteração neste, é notificada às partes interessadas via e-mail. Além disso, dentro dos itens de trabalho há uma sessão de discussões na qual é possível fazer referência a outros itens de trabalho, membros ou ainda a conteúdo externo.

Pelo dashboard é possível consolidar e compartilhar diversas informações que sejam vistas por todos os membros do projeto em tempo real. Visualizar status dos itens de trabalho, relacionamentos entre eles, responsáveis e andamento das iterações.

No ciclo de vida de desenvolvimento há diversos relacionamentos e integrações, tais como: planejamento de iterações, equipes responsáveis, processos rastreamento de tarefas, defeitos, controle de versão, gerenciamento de compilações e entregas. Todos esses aspectos estão integrados em um único ambiente colaborativo.

Tudo tem início a partir de um processo

Os projetos do RTC seguem um processo definido para atender aos objetivos da equipe. Os processos definem itens de trabalho, fluxos de estado, linhas do tempo, permissões de usuários, funções, equipes, comportamentos e orientações que são utilizados para controlar e organizar todo o fluxo de trabalho dos projetos.

A partir da definição do processo é possível criar diversos modelos de processo a fim de adequá-los aos requisitos do projeto e necessidades da equipe. Assim, um processo pode ser bastante restritivo ou flexível. Por exemplo: um processo restritivo pode ser definido de forma que, ao final de uma liberação esta seja submetida a aprovações de líderes, com a finalidade de reduzir o risco de erros ou não conformidades da entrega, evitando que o produto tenha que ser corrigido.

Dessa forma, os processos contribuem para manter a padronização e integridade dos projetos, promovendo confiabilidade, eficiência e eficácia aos usuários.

Atributos do RTC

No RTC, um produto de trabalho é gerenciado e planejado em Áreas de Projeto (AP). Esta tem seu comportamento definido a partir de um modelo de processo e tem por finalidade representar um produto de software em desenvolvimento. Assim, uma AP é composta por vários atributos a saber: Painéis (dashboards), Itens de Trabalho, Consultas, Planos, Controle de Versão, Compilações, Relatórios, Linhas de Tempo e Iterações, Membros, Equipes e Funções. Eles facilitarão o gerenciamento e o planejamento do ciclo de vida do produto de trabalho em questão. Para entender melhor, a seguir veremos a definição de cada um deles:

  • Dashboards - Painel apresentado na página inicial de uma AP com informações customizáveis e de relevância para o produto de trabalho em desenvolvimento, como: status dos itens de trabalho, equipes e membros do projeto, status do servidor, progresso do planejamento de uma sprint que representa o ciclo de trabalho, etc.;
  • Itens de Trabalho - Principal elemento utilizado para rastrear e coordenar o desenvolvimento e o fluxo de trabalho, além de permitir associações entre outros itens de trabalho, de modo a representar seus relacionamentos;
    Itens de trabalho são compostos por sessões que agrupam atributos, tornando cada item único. Os atributos padrão incluem: título, descrição, progresso, responsável, equipe, data de início e término, severidade, prioridade etc., contudo, itens de trabalho são customizáveis, sendo possível modificar seus atributos, a fim de atender a necessidade do projeto, facilitando seu controle e rastreamento. Os itens de trabalho comuns são tarefas e defeitos, contudo, é possível criar outros que se queira rastrear e planejar;
  • Consultas - Ferramenta que possibilita aos usuários diversas formas de busca por itens de trabalho, utilizando uma série de condições que satisfaçam o objeto daquilo que se quer como resultado. São as consultas que servirão de insumo para preencher o dashboard;
  • Planos - Componentes que estão associados a uma iteração, podendo ou não ter uma equipe associada, e os planos auxiliam na execução e planejamento dessas iterações. Com eles é possível ter uma visão rápida dos itens de trabalho planejados para a iteração em questão, bem como relacionamentos entre eles, status, responsável, progresso e outros atributos que podem ser incluídos nessa visão;
  • Controle de Versão - Ferramenta que permite o controle de versão dos códigos fonte produzidos ao longo do desenvolvimento do software, permitindo que os membros de uma AP compartilhem e mantenham sempre a versão atualizada do mesmo;
  • Relatórios - Semelhante à ferramenta de consulta, mas que permite obter uma visão mais customizável caso aquela não seja satisfatória;
  • Compilações - O sistema de compilação do RTC integra os processos de compilação com os itens de trabalho baseado no gerenciamento de mudança e no controle de versões do Jazz;
  • Linhas de Tempo e Iterações - São elementos que caminham junto dentro de uma AP, pois não existe linha de tempo sem iteração(ões) e vice-versa. Uma AP pode ter uma ou mais linhas de tempo e são elas os elementos responsáveis por definir como em um determinado período de tempo (definido ou não) será dividido em iterações como: releases, marcos ou sprints. Por exemplo: é possível usar uma linha de tempo para controlar o trabalho de desenvolvimento de um novo produto e uma outra diferente para controlar o trabalho de manutenção.As iterações tipicamente têm um período definido de início e fim e normalmente definem o que será entregue ao final desse período.Dentro de uma linha de tempo é possível criar uma hierarquia de iterações em que as de nível superior representam releases e as iterações filhas representam marcos dentro desses releases;
  • Equipes - são usadas para agrupar e controlar acesso dos membros aos artefatos pertencentes aquela equipe;
  • Membros - Forma de controlar o acesso aos itens da AP, pois apenas os membros podem modificá-los. Aqueles que são administradores têm permissão para configurar o processo;
  • Funções - Cada membro de uma AP precisa ter uma função associada e pode exercer diversas. Funções controlam as permissões e determinam as operações que os membros podem exercer em uma AP.

Por dentro do RTC

A partir desta seção será mostrado como criar: uma área de projeto, linha do tempo, adicionar membros e associar funções a eles, uma equipe, um item de trabalho, um planejamento, uma consulta e um painel para visão rápida e geral de todo o projeto.

Nesse artigo será utilizado um projeto criado a partir da sandbox disponibilizada pela IBM. Primeiramente será necessário realizar um cadastro no site Jazz (vide seção Links). Em seguida acessaremos o sandbox (vide seção Links) para criarmos nosso projeto, como mostra a Figura 3.

Criando um projeto na sandbox

Figura 3. Criando um projeto na sandbox

Após, será necessário dar um nome para o projeto e criá-lo, como mostra a Figura 4.

Dando um nome para o projeto

Figura 4. Dando um nome para o projeto

A figura mostra outras duas ferramentas que compõem o ALM da IBM e estão sob a plataforma Jazz, mas não serão utilizadas nesse artigo:

  • Rational Quality Manager, que é um hub colaborativo para ajudar as equipes no compartilhamento de informações, usar automação para acelerar planejamentos e relatar em métricas para obter decisões de liberação informadas;
  • Rational DOORS Next Generation, que é uma plataforma para a gestão de qualidade, pois foi projetado para capturar, rastrear e gerenciar requisitos de administração mais efetivos e de comportamento comum a todos do projeto;

Após a criação do projeto vamos acessar a nossa Área de Projeto no RTC, escolhendo a opção RTC Agile (Change and Configuration Management). Ao acessarmos a AP podemos observar o menu, onde poderemos criar itens de trabalho, consultas e os planos e, logo abaixo o dashboard, com widgets que mostram as estatísticas dos elementos de configuração do projeto. Observe a Figura 5.

Visão geral da AP: Menu e
Dashboard

Figura 5. Visão geral da AP: Menu e Dashboard.

Criando uma Tarefa

A tarefa é um tipo de item de trabalho que tem por finalidade endereçar uma ação a alguém com um prazo definido para entrega.

Para criarmos uma tarefa no menu clicamos em "Itens de Trabalho" e, dentre os itens disponíveis, selecionamos "Task", como mostra a Figura 6.

Selecionando uma Tarefa

Figura 6. Selecionando uma Tarefa

A seguir preenchemos os atributos Summary, Owner by, Planned for e Due Date e, após, salvamos a tarefa. Dessa forma, esta tem um nome (por boa prática deve iniciar comum verbo no imperativo), um responsável, está planejada dentro de uma sprint e possui uma data de vencimento, como mostra a Figura 7.

Atributos da Tarefa

Figura 7. Atributos da Tarefa

Note que após ser salva, nossa tarefa adquire um ID e um estado "Novo", como mostra a Figura 8. Além disso, quando um Item de Trabalho é criado ou modificado, um e-mail é enviado ao responsável e aos assinantes.

 ID e estado novo

Figura 8. ID e estado "Novo"

Criando um Plano da Sprint

Parar criarmos um Plano da Sprint, no menu clicamos em "Planos" e, dentre os itens disponíveis, selecionamos "Sprint Backlog", como mostra a Figura 9.

Selecionando um Plano de Sprint

Figura 9. Selecionando um Plano de Sprint

Um plano necessariamente precisa estar associado a uma iteração da Linha do Tempo.

Na Figura 10 é mostrada a visão geral do Plano com nome, sprint associada e os atributos (Summary, Rank, Status, Owned By, Effective Estimate e Progress).

Visão geral do Plano da Sprint

Figura 10. Visão geral do Plano da Sprint

Tais dados nos dão uma visão geral da Sprint, pois permite visualizar a ordem de execução da tarefa, o estágio em que ela está (caso esta esteja encerrada o nome dela aparece tachado), o responsável por executá-la, uma estimativa de tempo de execução e o progresso efetivo.

Ao posicionarmos o mouse em cima de qualquer tarefa surge uma caixa de diálogo, onde podemos obter mais informações sobre ela sem sair da visão do plano, como mostra a Figura 11.

Caixa de diálogo suspensa, que
mostra informações rápidas da tarefa

Figura 11. Caixa de diálogo suspensa, que mostra informações rápidas da tarefa.

Criando uma consulta

As consultasconsistem em uma ou mais condições nas quais a procura se baseia epermitem a qualquer usuário buscar por itens de trabalho dentro da Área de Projeto. Cada condição faz referência a um ou mais atributos dos itens de trabalho. Dessa forma, podemos combinar atributos utilizando as expressões "AND" e/ou "OR".

Parar criarmos uma consulta, no menu, clicamos em "Itens de Trabalho" e, na sequência, em "Criar Consulta", como mostra a Figura 12.

Criando uma consulta

Figura 12. Criando uma consulta

Neste momento escolheremos os parâmetros que vão fazer parte da nossa consulta. Para o exemplo vamos realizar uma consulta em que sejam mostradas as tarefas que ainda não foram resolvidas, os responsáveis e o status das tarefas.

Primeiramente, daremos um nome à consulta: "Tarefas Abertas" e em seguida clicaremos no botão "Incluir Condição", como vemos na Figura 13.

Nome

Figura 13. Nome e Incluir condição

Em seguida,selecionamos os seguintes atributos: "Type">"Task". Aqui, nossa consulta está parametrizada para mostrar todas as tarefas. Agora é necessário selecionar a segunda condição: "Status">"Não Resolvido", que fica no quadro ao lado da seção de atributos, como mostra a Figura 14.

Parâmetros que definem tarefas não
resolvidas

Figura 14. Parâmetros que definem tarefas não resolvidas.

Agora salvamos e executamos. Veja que são listadas todas as tarefas não resolvidas na Figura 15, incluindo o nome da tarefa, o responsável e o status.

Resultado da Consulta que exibe,
nome, responsável e status

Figura 15. Resultado da Consulta que exibe, nome, responsável e status.

Adicionando um Widget ao Dashboard

O Dashboard possibilita visualizarmos, de forma rápida e em tempo real, informações do servidor e da Área de Projeto como um todo. Para customizá-lo faz-se necessária a inclusão de widgets nele. Alguns são pré-configurados, dentre eles temos os que exibem informações do servidor, nomes das equipes, membros, linha do tempo etc. Há outros, todavia, que precisam de uma consulta para a exibição das informações. Neste caso, as consultas fornecem os dados e os widgets os transformam em gráficos customizáveis.

No Dashboard, para adicionar um widget, é necessário clicarmos no botão "Incluir Widget", como mostra a Figura 16.

Incluindo Widget

Figura 16. Incluindo Widget

Em seguida vamos selecionar o tipo de informação que queremos exibir. No exemplo vamos utilizara consulta criada anteriormente como base para a inclusão do widget no dashboard.

Como ela é baseada em itens de trabalho, clicamos na categoria "Itens de Trabalho" e, em seguida, vamos selecionar o widget chamado "Estatísticas do Item de Trabalho". Após selecionarmos, clicamos em "Incluir Widget", como vemos na Figura 17.

Selecionando o Widget

Figura 17. Selecionando o Widget

O widget agora foi adicionado ao Dashboard. O próximo passo é configurá-lo, como mostra o passo da Figura 18.

Configurando o Widget

Figura 18. Configurando o Widget.

Selecionamos o tipo de gráfico (barras, pizza...), a consulta criada anteriormente e, em seguida, um parâmetro, que no caso, será status, pois é o que queremos mostrar no Dashboard. Há outros itens na configuração, mas não são obrigatórios. Após, clicamos em "Ok" para que o widget seja carregado.

Uma vez carregado o widget, este será atualizado em tempo real e exibido a todos os usuários da AP, como mostra a Figura 19.

Visualização do Widget

Figura 19. Visualização do Widget

Podemos adicionar ao dashboard vários outros widgets e ter, desta forma, várias informações disponíveis ao alcance de todos em um só lugar.

Esse tipo de informação é muito útil para projetos colaborativos, pois todos estarão sempre atualizados com o progresso do projeto, sem a necessidade de ter que executar sempre a consulta.

Tivemos então uma visão geral de como a ferramenta colaborativa RTC pode auxiliar na gestão do ciclo de vida de projetos de software, diminuindo a distância entre desenvolvimento e cliente, possibilitando que todas as partes interessadas acompanhem a evolução em tempo real do produto de software que será entregue, promovendo a comunicação e respostas rápidas a mudanças do negócio. Vimos como ela nos dá controle do início ao fim de todo o processo, mitigando possíveis falhas de entendimento que por ventura aconteçam.

Links

Introdução ao Gerenciamento de Configuração e Mudança
http://www.funpar.ufpr.br:8080/rup/process/workflow/conf_mgt/in_cm.htm

Overview do RTC
http://www-01.ibm.com/support/knowledgecenter/SSYMRC_4.0.3/com.ibm.team.concert.doc/topics/c_product-overview.html?cp=SSYMRC_4.0.3%2F3&lang=pt-br

Visão geral dos fundamentos do projeto no RTC
https://jazz.net/library/article/589

Cadastro no Jazz
https://jazz.net

Sandbox
https://jazz.net/products/sandbox/