Integração dos processos de Gestão de Configuração do CMMI com o Gerenciamento de Liberação do ITIL

May 29, 2017 | Autor: Cláudio Ratke | Categoria: Change Management, IT Governance
Share Embed


Descrição do Produto

Integração dos processos de Gestão de Configuração do CMMI com o Gerenciamento de Liberação do ITIL Marlon Gracietti de Amorim, Cláudio Ratke Departamento de Sistemas e Computação Universidade Regional de Blumenal (FURB) – Blumenau, SC – Brasil [email protected], [email protected]

Resumo. Este artigo tem como objetivo demostrar a convergência das melhores práticas recomendadas pelo Capability Maturity Model Integration (CMMI) e Information Technology Infrastructure Library (ITIL), este trabalho demonstra a agregação dos conceitos em uma aplicação que apresenta informações relevantes ao planejamento e acompanhamento da liberação de novos releases de software. Os resultados obtidos com este trabalho refletem em um processo definido e controlado que inicia desde a solicitação da requisição de mudança até a atualização segura e planejada no ambiente de produção.

1. Introdução Com o aumento da complexidade da infraestrutura de TI e da dependência das organizações em relação aos serviços de TI, torna cada vez mais necessário o gerenciamento detalhando a liberação de softwares para uso pela organização (MAGALHÃES; PINHEIRO, 2007). Para sustentar essa demanda, as empresas desenvolvedoras de softwares precisam adotar boas práticas para obter o mínimo de impacto e a máxima agilidade na entrega de seus serviços. Segundo Magalhães e Pinheiro (2007) são muito frequentes o emprego de processos simplificados para o gerenciamento de liberação, quando disponíveis, os quais acabam não evitando a ocorrência de incidentes e problemas, passível de provocar a perda da estabilidade da infraestrutura de TI, e consequentemente, a indisponibilidade de serviços de TI. A solução proposta com o desenvolvimento deste trabalho é a utilização de práticas recomendadas pelo Capability Maturity Model Integration (CMMI) e Information Technology Infrastructure Library (ITIL) para definir um novo processo de trabalho, que possibilita um planejamento da liberação e faz com que o software a ser atualizado receba notificação de novas versões disponíveis, acesse os arquivos disponibilizados em um servidor, através do File Transfer Protocol (FTP) e, depois de realizada a transferência dos arquivos, o aplicativo irá iniciar o processo de homologação e aprovação online das modificações recebidas até a atualização definitiva do software no ambiente de produção. Alguns dos benefícios obtidos é a redução dos riscos, a proteção do ambiente de proteção, controle e notificações sobre o que está sendo liberado, além de reduzir o tempo de entrega de correções e melhorias disponibilizadas para cada cliente.

2. Gestão de configuração (CMMI) Segundo Sommerville (2003), gestão de configuração é a utilização de modelos e padrões para gerenciar um software em desenvolvimento. Alterações em suas funcionalidades, correções e adaptações, geram diferentes versões do sistema. A gerência de configuração serve para evitar conflitos nos itens de configuração modificados. A gestão de configuração de software pode ser entendida como uma disciplina que permite manter a evolução de produtos de software sobre controle e contribuir para atender as exigências de qualidade e prazo. Ao longo dos anos a gestão de configuração tem evoluído, e atualmente envolve as seguintes áreas de processo (ESTUBLIER, 2000): a) identificação da configuração de produtos de trabalho selecionados que compõem o baseline em determinados instantes; b) controle de mudança nos itens de configuração; c) build de produtos de trabalho a partir do sistema de gestão de configuração; d) manutenção e integridade das linhas de base; e) disponibilização do status e dos dados atuais de configuração para desenvolvedores, usuários finais e clientes. Segundo Mellon (2006) os produtos de trabalho colocados sob a gestão de configuração incluem os produtos que são entregues ao cliente, produtos de trabalho internos selecionados, produtos adquiridos, ferramentas e outros itens que são utilizados para criar e descrever esses produtos de trabalho. É possível que produtos adquiridos tenham que ser colocados sob a gestão de configuração tanto pelo fornecedor como pelo projeto. Recomenda-se que sejam estabelecidas cláusulas no contrato com fornecedores para a condução da gestão de configuração. E também que sejam estabelecidos e mantidos métodos para assegurar que os dados estejam completos e consistentes (COUTO, 2007).

3. Gerenciamento de mudanças (CMMI) As necessidades e requisitos organizacionais modificam o tempo de vida útil de um sistema. Isso requer que mudanças sejam feitas no software. Um processo definido de gerenciamento de mudanças associado a ferramentas de apoio garantem que essas mudanças sejam registradas e aplicadas ao sistema de maneira econômica (SOMMERVILLE, 2003). Os procedimentos de gerenciamento de mudança devem ser concebidos pra assegurar que os custos e os benefícios das mudanças sejam adequadamente analisados e as mudanças em um sistema sejam feitas de maneira controlada (SOMMERVILLE, 2003). O primeiro estágio do processo de gerenciamento de mudanças é o preenchimento de um formulário de solicitação de mudança Change Request Form (CRF), em que o solicitante estabelece a mudança requerida no sistema. Tem como objetivo registrar a solicitação da mudança, recomendações, custo estimado, aprovação.

Ele pode também incluir uma seção na qual o engenheiro de manutenção faz um esboço de como a mudança deverá ser implementada. As solicitações de mudança devem ser registradas no banco de dados de configuração (SOMMERVILLE, 2003). Um exemplo de um formulário de solicitação de mudança parcialmente preenchido utilizando a ferramenta de apoio Redmine é exibido na Figura 1.

Figura 1 - Formulário de requisição de mudança

Uma vez que o formulário de solicitação de mudança tenha sido submetido, ele é analisado a fim de ser verificado se a mudança é válida. Algumas solicitações de mudanças podem ocorrer em virtudes de erros de compreensão, e não de defeitos do sistema. Outras podem se referir a defeitos já conhecidos (SOMMERVILLE, 2003, p. 555). Quando um conjunto de mudanças é aprovado, ela é encaminhada para a equipe de desenvolvimento ou manutenção, para implementação. À medida que os itens de configuração são modificados, deve ser mantido um registro de mudança feito em cada um deles (SOMMERVILLE, 2003, p. 556).

4. Gerenciamento de liberação (CMMI) Ter uma política de gerenciamento de liberação também é muito importante para o sucesso de um projeto. Como o desenvolvimento de um projeto é bastante dinâmico, torna-se frequente a liberação de várias versões do produto (BECTA, 2004). O gerenciamento de liberação é o processo de planejar, compilar, testar e implantar uma versão de distribuição de software, bem como o controle de versionamento e a sua armazenagem. Tem como objetivo garantir a qualidade do

ambiente de produção usando procedimentos formais e verificações quando se implementam novas versões (BON, 2006). A forma mais comum de lançamento de versões nos projetos é o “congelamento” do código, isto é, a criação de uma linha de base (Consultar 6.2). A partir disto, nenhuma funcionalidade é adicionada ao código base, apenas os bugs são corrigidos para o lançamento de uma versão estável. Em seguida é criada uma nova liberação que compreendem uma ou mais mudanças autorizadas. A sua primeira subdivisão baseia-se no nível da liberação. Elas frequentemente são divididas em (BON, 2006, p. 96): a) liberações importantes: em geral com funcionalidades significativamente ampliada. Essas liberações quase sempre eliminam vários erros conhecidos, inclusive soluções de contorno e reparos temporários; b) liberações de menor importância: Incluem vários aperfeiçoamentos de menor importância e reparos de erros conhecidos; c) reparos de emergência: normalmente implementadas como um reparo temporário para um problema ou erro conhecido. Novas versões de software devem ser disponibilizadas pela equipe de gerenciamento de configuração, e não pelos desenvolvedores de sistema, mesmo quando não se destinam à liberação externa. Isso facilita manter a consistência da configuração de banco de dados, uma vez que somente a equipe de gerenciamento de configuração pode modificar as informações sobre a versão (SOMMERVILLE, 2003). Uma versão de software é diferente de um release como descreve o autor. Um release de sistema é uma versão que é distribuída para os clientes. Cada release de sistema deve incluir nova funcionalidade ou se destinar a uma diferente plataforma de hardware. Há sempre muito mais versões de um sistema do que releases, uma vez que as versões são criadas dentro de uma organização para o desenvolvimento interno ou testes, e nunca são liberadas para clientes (SOMMERVILLE, 2003, p. 557). Quando um item de configuração precisa ser modificado, este deve ser retirado do sistema de gerenciamento de versão e quando for devolvida uma nova versão do item de configuração deve ser criada (SOMMERVILLE, 2003, p. 557). Este processo é feito pelas ferramentas de apoio como descrito na seção 2.2.5.

5. Gerenciamento de liberação (ITIL) Segundo Magalhães e Pinheiro (2007) o gerenciamento de liberação é o processo responsável pela implementação das mudanças no ambiente de produção de um conjunto de itens de configuração novos ou que sofreram alterações. Cada vez que são disponibilizadas melhorias ou alterações o gerenciamento de liberação tem a responsabilidade de introduzir às alterações no ambiente de trabalho como descreve o autor. Uma vez que uma ou mais mudanças são desenvolvidas, testadas e empacotadas para implementação, o processo de Gerenciamento de Liberação é responsável por introduzi-las na infraestrutura de TI e gerenciar as

atividades relacionadas com tal liberação. (MAGALHÃES; PINHEIRO, 2007, p. 70).

O processo de Gerenciamento de Liberação também contribui para aumentar a eficiência da introdução das mudanças no ambiente de produção, combinando-as em uma única liberação e realizando a implementação em conjunto (MAGALHÃES; PINHEIRO, 2007).

5.1. Biblioteca Definitiva de Software (ITIL) A Biblioteca Definitiva de Software é o local onde todas as versões autorizadas e definitivas de software da organização são armazenadas. Ela armazena as cópiasmestras de todos os softwares comprados (junto com os documentos de licenciamento), assim como as dos softwares desenvolvidos internamente (MAGALHÃES; PINHEIRO, 2007).

5.2. Indicadores de desempenho (ITIL) Segundo Magalhães e Pinheiro (2007) o processo de Gerenciamento de Liberação necessita prover pontos de controle que permitam avaliar sua eficiência, efetividade e economicidade. Estes pontos de controle são conhecidos como Key Performance Indicator (KPI). O Quadro 1 Magalhães e Pinheiro (2007, p.258) apresentam alguns indicadores de desempenho. Quadro 1 - Proposta de Indicadores de desempenho.

Perspectiva Eficiência Eficácia Efetividade Economicidade

Indicador Índice de evolução dos incidentes advindos das liberações realizadas. Índice de atualização dos ICs em produção. Índice de liberações implementadas dentro do prazo estabelecido. Índice de redução do prazo médio de implantação de liberações. Índice de liberações implementadas sem a necessidade de backout. Índice de satisfação dos usuários com a implantação das liberações. Índice de liberações realizadas dentro do orçamento acordado. Índice de cumprimento das exigências legais de licenciamento.

6. Ferramentas de apoio De acordo com Sommerville (2003) os processos de gerenciamento de configuração são padronizados e envolvem a aplicação de procedimentos predefinidos. Eles exigem no gerenciamento cuidados de grande quantidade de dados, e a atenção aos detalhes é essencial. Quando se constrói uma nova versão de software, um único erro de gerenciamento de configuração pode significar que o software não funcionará

adequadamente. Como consequência, a ferramenta de apoio é essencial para o gerenciamento de configuração. A seguir são exibidas algumas das ferramentas de apoio para gerência de configuração utilizada no desenvolvimento deste trabalho. 6.1 Subversion (SVN) O Subversion é um software livre para controle de versão. É utilizado tanto para o desenvolvimento de software livre como para fins corporativos (SUSSMAN, FITZPATRICK, PILATO, 2011). De acordo com o site do aplicativo ele é desenvolvido como um projeto da Apache Software Fundartion, e faz parte de uma grade comunidade de desenvolvedores e usuários. Tem o objetivo de gerenciar arquivos e diretórios, e as modificações feitas neles ao longo do tempo. Isto permite que você recupere versões antigas de seus dados, ou que examine o histórico de suas alterações (SUSSMAN, FITZPATRICK, PILATO, 2011, p. 17). Em certo nível, a capacidade de várias pessoas modificarem e gerenciarem o mesmo conjunto de dados de seus próprios locais é o que fomenta a colaboração. Progressos podem ocorrer muito mais rapidamente quando não há um gargalo único por onde todas as modificações devam acontecer. E como o trabalho está versionado, você não precisa ter medo de que seu trabalho perca qualidade por não ter essa via única para modificações—se os dados sofrerem alguma modificação indevida, apenas desfaça tal modificação. (SUSSMAN, FITZPATRICK, PILATO, 2011, p. 34).

Abaixo estão relacionadas algumas características e benefícios do Subversion (SUSSMAN, FITZPATRICK, PILATO, 2011): a) controle do histórico de alterações; b) trabalho em equipe - Auxilia o trabalho em equipe, torna possível que diversas desenvolvedores trabalhem sobre o mesmo conjunto de documentos ao mesmo tempo. Mitiga o risco de conflitos de edições; c) marcação e resgate de versões estáveis – Permite marcar uma versão estável do sistema, facilitando a sua localização no futuro; d) ramificação de projeto – possibilita a divisão do projeto em várias linhas de desenvolvimento, que podem ser trabalhadas paralelamente, sem que uma interfira na outra. 6.2. Ramos de desenvolvimento (Branches) Segundo Sussman, Fitzpatrick e Pilato (2011) um ramo é uma linha de desenvolvimento que existe independente de outra linha, e ainda, partilham um histórico em comum. Um ramo sempre se inicia como cópia de outra linha de desenvolvimento e segue rumo próprio a partir deste ponto, gerando seu próprio histórico. Um exemplo é exibido na Figura 3.

Figura 2 - Ramos de desenvolvimento adaptado de Sussman, Fitzpatrick e Pilato (2011, p. 72).

O Subversion tem comandos para ajudar a controlar versões paralelas de um arquivo ou diretório. Ele permite você criar ramos copiando seus dados, e ainda lembra que as cópias têm relação entre si. Ainda é possível duplicar cópias de um ramo para outro. Finalmente, ele pode fazer com que partes de sua cópia de trabalho reflitam ramos diferentes, assim é possível “misturar e combinar” diferentes linhas de desenvolvimento no trabalho de dia-a-dia (SUSSMAN, FITZPATRICK, PILATO, 2011, p. 72). 6.3 Redmine O Redmine é um software livre, gerenciador de projetos baseados na web e ferramenta de gerenciamento de mudança. Ele contém calendário e gráfico de Gantt para ajudar na representação visual dos projetos e seus prazos de entrega. Ele pode também trabalhar com múltiplos projetos (REDMINE, 2012). O Redmine é escrito usando o framework Ruby on Rails. Ele é multiplataforma e suporta diversos bancos de dados (REDMINE, 2012). Algumas das principais características do Redmine são (REDMINE, 2012): a) suporte a vários projetos; b) controle de acesso flexível baseado em papéis; c) sistema de rastreamento de tarefas; d) gráfico de gantt e calendário; e) gerenciamento de arquivos, notícias e documentos; f) notificações por feeds ou e-mail; g) wiki por projeto; h) fórum por projeto; i) gerenciamento de tempo; j) possibilita a criação de campos personalizados para as tarefas, entradas de tempo, projetos e usuários; k) integração com sistemas de gerenciamento de configuração (SVN, CVS, Git, Mercurial, Bazaar e Darcs); l) criação de tarefas por e-mail;

m) suporte a autenticação múltipla LDAP; n) suporte a vários idiomas; o) suporte a vários banco de dados.

7. Implementação Para reunir informações e automatizar o processo de liberação, o trabalho desenvolvido faz a integração com um sistema de gestão empresarial, gerenciamento de configuração e gerenciamento de mudança. Utilizando práticas recomendas pelo CMMI a equipe de liberação, inicia o processo de liberação e faz a indicação dos arquivos de atualização. Automaticamente os arquivos indicados são disponibilizados em um FTP pelo servidor de atualizações. O servidor ainda tem a responsabilidade de autorizar o download dos arquivos solicitado pelos clientes via webservice. A partir do momento que a atualização é autorizada, os clientes fazem o download automático dos arquivos. Seguindo recomendações do processo de gerenciamento de liberação definido pelo ITIL, é dado inicio ao processo de atualização. Primeiramente em um servidor de homologação em seguida a atualização é enviada para o servidor de produção. A Figura 3 exibe o uma visão geral do trabalho desenvolvido.

Figura 3 - Visão geral do trabalho desenvolvido

Este trabalho tem o objetivo de centralizar a atenção do responsável pela liberação na validação e acompanhamento da versão liberada. Foram inseridos alguns

processos para ampliar o controle sobre as soluções desenvolvidas. A Figura 4 exibe uma visão geral do ciclo de vida de uma requisição de mudança realizada pelo cliente. act Fluxo Usuário Chave/Membro da equipe

Gerente de Projeto (PM)

Responsável

Gerente de Configuração (CM)

Inicio

Requisição de Mudança (Tarefa)

Avaliar se a requisição é coerente, viável e nescessária.

Av aliação

Implementa as modificações nescessárias

Define Situação (Autorizado)

Realiza Testes/Validação

Definir Classificação

Correção, Adaptação, Evolução

Definir Prioridade

Baixa, Normal, Alta, Urgente, Imediata

Atualiza tempo de trabalho

Define Situação (Resolv ido)

Utilizar a tela de Gerenciamento de Liberações.

Definir Categoria Atualiza Ambiente Homologação

Libera Versão Analizar Impacto Gera uma baseline

Realiza Testes/Validação

Estabelacer Tempo Estimado

Atribuir a uma v ersão

Atribuir a um responsáv el

Requisição atendida?

[Não]

Define Situação (Reaberto)

[Sim] [Não] Define Situação (Concluído)

Implementação OK? [Sim]

Atualiza Ambiente Produção

Define Situação (Homologação)

Criação de um Branch no Sistema de Controle de Versão (SCM)

Fim

Figura 4 - Fluxo proposto

A partir do momento que o cliente informa a necessidade de uma nova funcionalidade no sistema, o Analista faz o levantamento dos requisitos e regras de negócio para a alteração solicitada. Em seguida é realizada a estimativa de tempo e

custo da alteração. Caso a solicitação seja aprovada pelo cliente, ela é registrada no sistema de controle de mudanças (redmine) e atribuída a um programador. Com o término do seu desenvolvimento, são realizados testes unitários até que a correção esteja em condições de ser liberada para o cliente. O objetivo deste processo é garantir que possíveis erros possam ser corrigidos após uma liberação para cliente, evitando a necessidade de liberar uma nova atualização antes da sua liberação oficial. Após serem realizados todos os testes de integração a nova versão está pronta para ser liberada. É neste momento que o aplicativo desenvolvido neste trabalho é utilizado. A equipe responsável pela liberação inicia o processo de liberação através da tela de Gerenciamento de liberações exibida na Figura 5.

Figura 5 - Tela de gerenciamento de liberações

O aplicativo desenvolvido armazena um histórico com todas as liberações realizadas e os clientes que receberam cada atualização. Ao incluir uma nova liberação é exibida uma lista com todos os clientes envolvidos no projeto, o sistema faz a recomendação dos clientes aptos a receber a nova atualização exibindo-os na cor amarela, como é exibido na Figura 5.

11. Resultados Neste trabalho foi realizado o desenvolvimento de um aplicativo que automatiza o processo de liberação de software. Auxiliando os membros da equipe de liberação a identificar os clientes aptos a receber a nova atualização, monitorar a versão utilizada por cada cliente, além de manter um histórico de todas as liberações efetuadas pela empresa. O aplicativo ainda faz a integração com o sistema de projetos redmine, extraindo informações utilizadas na criação de release notes de cada liberação. Para concluir foi adicionado a possiblidade de enviar por e-mail a relação de modificações contidas em cada liberação.

Utilizando conceitos recomendados pelas metodologias ITIL e CMMI o trabalho alcançou todos os seus objetivos, além de auxiliar na elaboração de um novo fluxo de trabalho, que proporciona objetividade e define responsabilidade sobre cada etapa do processo de requisição de mudança, fornecendo um ganho de qualidade e maior controle dos serviços prestados. As ferramentas e tecnologias utilizadas foram adequadas, atendendo todas as exigências para o sucesso deste projeto. A realização deste trabalho contribuiu para a expansão dos conhecimentos sobre as metodologias ITIL e CMMI, que foram elementos essenciais para guiar o objetivo deste trabalho. Além disso, novas oportunidades foram identificadas, despertando o interesse pelas demais áreas tratadas por estas metodologias.

Referências BECTA, Advice. FITS Release Management. [S.I.], 2004. Disponível em: . Acessado em: 27 maio 2012. BON, Jan V. Fundamentos do gerenciamento de serviços em TI baseado no ITIL. 1. ed. Tradução Van Haren Publishing. Holanda, 2006. COUTO, Ana Brasil. CMMI: integração dos modelos de capacitação e maturidade de sistemas. Rio de Janeiro: Ciência Moderna, 2007. XIII, 276 p. ESTUBLIER, J. Software Configuration Management: Proceedings of the Conference on The Future of Software Engineering. Ireland: Limerick, 2000. MAGALHÃES, Ivan Luizio; PINHEIRO, Walfrido Brito. Gerenciamento de serviços de TI na prática: uma abordagem com base na ITIL. São Paulo: Novatec, 2007. 667 p. MELLON, Carnegie. CMMI para desenvolvimento – Versão 1.2. [S.l.], 2006. Disponível em: . Acessado em: 26 maio 2012. REDMINE. Redmine. [S.l.], 2012. Disponível em: . Acessado em: 13 maio 2012. SOMMERVILLE, Ian. Engenharia de software. 6. ed. São Paulo: Addison Wesley, 2003. XVI, 592 p. SUSSMAN, Ben; FITZPATRICK, Brian; PILATO, C. Version control with subversion: For subversion 1.7. California: TBA, 2011. 441 p.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.