Gerenciamento de Configuração e Desenvolvimento Ágil de Software

Classificado em Tecnologia

Escrito em em português com um tamanho de 9,42 KB

Gerenciamento de Configuração de Software (CM)

  • Explicar a importância do gerenciamento de configuração de software (CM).
  • Descrever as atividades fundamentais de gerenciamento de configuração: planejamento de gerenciamento de configurações, gerenciamento de mudanças, gerenciamento de versões e construções de sistemas.
  • Discutir o uso de ferramentas CASE para apoiar processos de gerenciamento de configuração.

Padrões de Gerenciamento de Configuração (CM)

O CM deve ser sempre baseado em um conjunto de padrões que são aplicados dentro de uma organização.

Os padrões devem definir como os itens são identificados, como as mudanças são controladas e como as novas versões são gerenciadas.

Os padrões podem ser baseados em padrões de CM externos (por exemplo, o padrão IEEE para CM).

Alguns padrões existentes são baseados em um modelo de processo cascata — novos padrões de CM são necessários para desenvolvimento evolucionário.

O Plano de Gerenciamento de Configuração (CM)

  • Define os tipos de documentos a serem gerenciados e um esquema de identificação de documentos.
  • Define quem tem a responsabilidade pelos procedimentos e pela criação de baselines de CM.
  • Define políticas para controle de mudanças e gerenciamento de versões.
  • Define os registros de CM que devem ser mantidos.
  • Descreve as ferramentas que devem ser usadas para o processo de CM e quaisquer limitações de seu uso.
  • Define o processo de uso das ferramentas.
  • Define a base de dados de CM usada para registrar informações de configuração.
  • Pode incluir informações como o CM de software externo, a auditoria de processos, etc.

Versões, Variantes e Releases

Versão: É uma instância de um sistema que é funcionalmente distinta, de alguma maneira, de outras instâncias de um sistema.

Variante: É uma instância de um sistema que é funcionalmente idêntica, mas não funcionalmente distinta de outras instâncias de um sistema.

Release: É uma instância de um sistema distribuída para os usuários fora da equipe de desenvolvimento.

Construção de Sistemas

É o processo de compilação e ligação de componentes de software em um sistema executável. Sistemas diferentes são construídos a partir de combinações diferentes de componentes. Esse processo é, atualmente, sempre apoiado por ferramentas automatizadas que são dirigidas por scripts de construção.

Ferramentas CASE para Gerenciamento de Configuração

Os processos de CM são padronizados e envolvem a aplicação de procedimentos predefinidos. Grandes quantidades de dados devem ser gerenciados. Ferramentas CASE maduras para apoiar o gerenciamento de configuração variam desde ferramentas stand-alone até workbenches integrados de CM.

Workbenches Abertos

Ferramentas para cada estágio no processo de CM são integradas por meio de procedimentos organizacionais e scripts. Oferece flexibilidade na seleção de ferramentas.

Workbenches Integrados

Fornecem apoio integrado a todo o processo de gerenciamento de configuração. São ferramentas mais fortemente integradas e mais fáceis de usar. Contudo, são complexos e dispendiosos, e muitas organizações preferem usar ferramentas de apoio individuais, mais baratas e simples.

Pontos-Chave do Gerenciamento de Configuração

  • Gerenciamento de configuração é o gerenciamento de mudanças de sistema para produtos de software.
  • Um esquema formal de atribuição de nomes de documentos deve ser estabelecido e os documentos devem ser gerenciados em uma base de dados.
  • A base de dados de configuração deve registrar informações sobre mudanças e solicitações de mudanças.
  • Um esquema consistente de identificação de versões deve ser estabelecido usando números de versões, conjuntos de atributos ou mudanças.
  • Releases de sistema incluem código executável, dados, arquivos de configuração e documentação.
  • A construção de sistemas envolve a montagem de componentes em um sistema.
  • Ferramentas CASE estão disponíveis para apoiar todas as atividades de CM.
  • Ferramentas CASE podem ser ferramentas stand-alone ou workbenches integrados, que fornecem apoio para gerenciamento de versões, construção de sistemas e gerenciamento de mudanças.

Desenvolvimento Rápido de Software (RAD)

  • Explicar como um processo de desenvolvimento incremental e iterativo conduz a uma entrega mais rápida de software mais útil.
  • Discutir a essência dos métodos de desenvolvimento ágeis.
  • Explicar os princípios e as práticas da Extreme Programming.
  • Explicar os papéis da prototipação no processo de software.

Características dos Processos RAD

  • Os processos de especificação, de projeto e de implementação são concorrentes; não há uma especificação detalhada e a documentação de projeto é minimizada.
  • O sistema é desenvolvido em uma série de incrementos. Os usuários finais avaliam cada incremento e fazem propostas para incrementos posteriores.
  • As interfaces de usuário do sistema são geralmente desenvolvidas usando um sistema de desenvolvimento interativo.

Vantagens do Desenvolvimento Incremental

  • Entrega acelerada dos serviços ao cliente;
  • Engajamento do usuário com o sistema.

Problemas com o Desenvolvimento Incremental

  • Problemas de gerenciamento;
  • Problemas contratuais;
  • Problemas de validação;
  • Problemas de manutenção.

Prototipação

Para alguns sistemas grandes, o desenvolvimento e a entrega incremental e iterativa pode não ser prático; isso é especialmente verdadeiro quando múltiplas equipes estão trabalhando em localidades diferentes. Prototipação, no sentido de um sistema experimental que é desenvolvido como base para a formulação de requisitos. Esse sistema é descartado quando a especificação do sistema for acordada.

Objetivo do Desenvolvimento Incremental

O objetivo do desenvolvimento incremental é entregar um sistema de trabalho aos usuários finais. O desenvolvimento inicia com os requisitos mais bem compreendidos.

Objetivo da Prototipação Throw-Away

O objetivo da prototipação throw-away é validar ou derivar os requisitos do sistema. O processo de prototipação inicia com aqueles requisitos que não são bem compreendidos.

Métodos Ágeis

  • Enfocam o código ao invés do projeto;
  • São baseados na abordagem iterativa para desenvolvimento de software;
  • São destinados a entregar software de trabalho e evoluí-lo rapidamente para atender aos requisitos que se alteram.

Os métodos ágeis são, provavelmente, os mais adequados para sistemas de negócio de porte pequeno/médio ou produtos para PC.

Problemas com Métodos Ágeis

  • Pode ser difícil manter o interesse dos clientes que estão envolvidos no processo.
  • Os membros da equipe podem ser inadequados para o intenso envolvimento que caracteriza os métodos ágeis.
  • A priorização de mudanças pode ser difícil onde existem múltiplos stakeholders.
  • A manutenção da simplicidade requer trabalho extra.
  • Do mesmo modo que em outras abordagens para desenvolvimento iterativo, os contratos podem ser um problema.

Extreme Programming (XP)

É talvez o mais conhecido e mais amplamente usado dos métodos ágeis. A Extreme Programming (XP) adota uma abordagem 'extrema' para o desenvolvimento iterativo.

Teste na Extreme Programming (XP)

  • Desenvolvimento test-first.
  • Desenvolvimento incremental de teste a partir de cenários.
  • Envolvimento do usuário no desenvolvimento e validação de testes.
  • Ferramentas de teste automatizadas são usadas para executar todos os testes de componentes cada vez que uma nova release é construída.

Pontos-Chave do Desenvolvimento Rápido de Software

  • Uma abordagem iterativa para desenvolvimento de software conduz a uma entrega de software mais rápida.
  • Métodos ágeis são métodos de desenvolvimento iterativos que objetivam reduzir o overhead de desenvolvimento e, desse modo, produzir software mais rápido.
  • A Extreme Programming inclui práticas como teste sistemático, melhoria contínua e envolvimento do cliente.
  • A abordagem de teste em XP é um ponto forte particular, onde testes executáveis são desenvolvidos antes que o código seja escrito.
  • Ambientes de desenvolvimento rápido de aplicações incluem linguagens de programação de banco de dados, ferramentas de geração de formulários e links para aplicações de escritório.
  • Um protótipo throw-away é usado para explorar requisitos e opções de projeto.
  • Ao implementar um protótipo throw-away, inicie com os requisitos que você menos compreende; no desenvolvimento incremental, inicie com os requisitos mais compreendidos.

Entradas relacionadas: