Sistema Para Controle de Processos Aplicando Scrum e
ITIL
Rafael L. Passarela, Prof. Me. Guilherme Lacerda, Prof. Daniel Wildt
Faculdade Cenecista Nsa. Senhora dos Anjos (FACENSA)
Av. José Loureiro da Silva, 1991 – 94.010-010 – Gravataí – RS – Brasil
{rafaelpassarela, guilhermeslacerda, dwildt}@gamil.com
Abstract. This article aims to present the benefits achieved by implementing a
system for process control, using the best practices of ITIL in Incident
Management and Problem Management as well as concepts of agile methods
to improve the procurement metrics to control them, using the Pascal
language with CodeGear RAD Studio 2007 and database FireBird 2.1.
Keywords: ITIL, Scrum, XP, Agile Methods, Process Control
Resumo. Este artigo tem como objetivo apresentar os benefícios obtidos com
a implementação de um sistema para o controle de processos, utilizando as
boas práticas do ITIL para a Gestão de Incidentes e a Gestão de Problemas,
bem como conceitos de métodos ágeis para facilitar a obtenção de métricas
para o controle dos mesmos, utilizando a Linguagem Pascal com CodeGear
RAD Studio 2007 e banco de dados FireBird 2.1.
Palavras chave: ITIL, Scrum, XP, Métodos Ágeis, Controle de Processos
1. Introdução
Atualmente as empresas encontram-se em um mercado cada vez mais globalizado, onde
a busca e a captação de clientes são feitas de diversas maneiras, como por exemplo,
oferecendo produtos ou serviços inovadores, algo que os destaque dos demais
concorrentes.
Existem segmentos de mercado onde a personalização e a constante evolução do
produto são considerados pontos cruciais para garantir que a empresa será a escolhida
pelo cliente.
Organizações de TI, principalmente as que se dedicam a construção de software,
têm estes dois fatores como essenciais para a satisfação do cliente. Além de evitar que o
sistema apresente bugs e corrigir os que eventualmente apareçam, é de suma
importância efetuar as personalizações para os clientes, desde um simples ajuste em um
relatório a até mesmo o desenvolvimento de uma nova funcionalidade. Para isto, é
necessário conhecer a real capacidade da equipe de desenvolvimento sabendo quantas
funcionalidades podem ser entregues por interação.
Segundo (DESCHAMPS, 2008), existem quatro necessidades fundamentais que
levam a realização de uma mudança em um software: novas necessidades de mercado,
novas necessidades do cliente, crescimento/diminuição dos negócios, restrições de
orçamento ou cronograma.
Diante de tal fato, muitas software houses realizam estas modificações no
software sem conhecer os reais motivos que levam a tal alteração, outras, sequer não
conhecem a capacidade da equipe em suportar tais demandas. Além disto, não possuem
rastreabilidade sobre as implementações, onde não sabem quem solicitou, quem alterou
e nem para qual motivo o software foi modificado.
Apesar de existirem sistemas capazes de gerenciar tais informações e elevar os
ganhos em ordem de grandeza proporcionada pelas métricas geradas, poucas
organizações se beneficiam destas ferramentas. Esta baixa adoção pode ser explicada
pela complexidade envolvida na utilização das mesmas, ressaltando que, em sistemas
mais simples, existem informações que são ignoradas e nos sistemas mais complexos
sua interface os torna degradantes.
Tal fato serviu como base de toda a motivação necessária para a elaboração deste
projeto, que surgiu da necessidade da criação de uma ferramenta que torne possível
gerenciar de forma simples e eficaz todas as tarefas necessárias para a distribuição de
requisições durante as interações em um projeto de software.
Outro fator motivacional que leva ao desenvolvimento deste trabalho bem como
a definição da ferramenta para controle de requisitos, teve como base a quantidade de
solicitações (bugs, novas implementações e personalizações), existentes em qualquer
empresa de desenvolvimento de software que não possuem o devido controle sobre os
mesmos bem como a possibilidade de gerir uma base de conhecimento sobre os
softwares desenvolvidos conforme as solicitações populam a base de dados do sistema
de controle.
Abaixo segue o modelo sugerido para a entrada de informações no sistema de
controle de requisitos:
Figura 1- Modelo para entrada de informações na base de dados (Fonte: próprio
autor).
Após a entrada dos dados será possível separar as informações entre incidentes e
problemas, bem como consultar registros semelhantes através da base de conhecimento
gerada.
O principal objetivo deste trabalho vem a ser demonstrar como é possível
gerenciar de forma simples e eficaz a distribuição de tarefas durante as interações
presentes no ciclo de desenvolvimento de software bem como obter métricas capazes de
identificar a potencial carga de trabalho suportada pela equipe de desenvolvimento.
Propõe-se então a criação de um sistema para controle de processos com a
capacidade de gerenciar de forma prática os requisitos necessários para a distribuição de
tarefas durante o ciclo de interações.
Espera-se diminuir o tempo necessário para gerencia de processos presentes
durante o ciclo das interações de software, de modo que este tempo seja melhor
aproveitado para projetá-lo, aplicando bons princípios de engenharia de software para a
construção de arquivos fontes com um padrão adotado e conhecido pela maioria dos
desenvolvedores.
Com a entrada dos requisitos em um único sistema, será possível obter uma base
de conhecimento sobre os sistemas desenvolvidos, proporcionando aos demais setores
usufruírem desta ferramenta, como por exemplo, o suporte a clientes.
Como objetivos específicos deste projeto, pode-se citar:
- Estudar sistemas de gerenciamento de projeto;
- Estudar gerencia de incidentes;
- Estudar gerencia de problemas;
- Estudar a linguagem de programação Pascal;
- Estudar o banco de dados FireBird;
- Estudar o CodeGear RAD Studio 2007;
- Definir as funcionalidades do programa;
- Modelar o programa exemplo;
- Implementação e validação do programa proposto.
Além da introdução e considerações finais, este artigo esta dividido em mais três
grandes seções: Referencial Teórico, Estado da Arte e Solução Proposta.
Na primeira seção tem-se o referencial teórico que trará em seu conteúdo
informações para as questões que norteiam a definição de um aplicativo para controle de
processos como princípios básicos para: manutenção de software, ITIL (gerencia de
projetos e gerencia de incidentes), métodos ágeis e a arquitetura necessária para
construção da ferramenta desenvolvida.
Na segunda, o estado da arte, mostra algumas das tecnologias envolvidas para
atingir o objetivo que é a criação de um sistema para controle de processos.
A terceira seção tratará da concepção da solução proposta, o cenário antes da sua
implantação, modelagens, telas e uma abordagem aos resultados preliminares já obtidos.
2. Revisão de Literatura
Nesta seção será feita uma breve abordagem sobre sistemas legados, manutenção de
software, Scrum e ITIL.
2.1. Sistemas Legados
Softwares tornam-se legados quando eles começam a resistir a modificação e a
evolução. No entanto, o conhecimento incorporado nestes sistemas constitui um trunfo
importante nas organizações. Estes sistemas podem ainda proporcionar um importante
valor comercial, tornando-se assim objetos de modernização ou substituição
(SEACORD, 2003).
Sistemas legados em geral, utilizam uma estrutura imperativa e com as seguintes
características:
- Sistemas com difícil manutenção;
- Sistemas sem documentação utilizada;
- Sistemas sem padronizações;
- Foram escritos em linguagens que não existem mais no mercado;
- Foram escritos por programadores que já se aposentaram;
- Sistemas que possuem um alto custo para modernização.
Por falta de documentação e com a mudança do pessoal técnico que participou
originalmente no desenvolvimento dos sistemas legados, os mesmos podem apresentar
problemas tais como:
- Estilos de programação distintos;
- Dificuldade de compreensão das regras de negócio;
- Desconhecimento das razões que levaram a determinadas decisões;
- Impossibilidade de reaproveitamento de equipamentos;
- E mesmo estando em perfeito estado de funcionamento as ferramentas de
desenvolvimento deixaram de ser úteis, devido ao surgimento de produtos
tecnologicamente mais avançados.
Seja pela evolução dos equipamentos ou pelas novas necessidades de negócio,
algumas empresas se deparam com a necessidade de evoluir seus sistemas, sendo estes
talvez os principais motivos para reestruturação e migração de um sistema. Dessa forma,
a reestruturação de um sistema proporciona uma oportunidade para a consideração de
um maior número de variáveis, sejam na atualização de hardware, mas também de
software.
Em contrapartida para certas empresas, o valor mais significante para a
atualização de seus programas de computador é a oportunidade de reorganizar as
operações departamentais, tendo como base um maior ganho de produtividade e a
utilização de softwares modernos.
2.1.1. Manutenção de Software
As razões que levam a manutenção de software se dividem nas seguintes categorias
conforme mostra o quadro abaixo (SWEBOK, 2004):
Correção
Aprimoramento
Pró-ativa
Preventiva
Perfectiva
Reativa
Corretiva
Adaptativa
Quadro 1 - Categorias de Manutenção de Software (Fonte: próprio autor).
Perfectiva: Também chamadas de acessórios, são feitas para melhorar o
produto, como adicionar necessidades dos usuários, ou para melhor o desempenho,
facilitar a utilização, ou agregar outros atributos.
Existem quatro necessidades fundamentais que levam a realização de uma
mudança em um software: novas necessidades de mercado, novas necessidades do
cliente, crescimento/diminuição dos negócios, restrições de orçamento ou cronograma
(DESCHAMPS, 2008).
Adaptativa: São feitas para acompanhar o ritmo das mudanças ambientais, tais
como: novos sistemas operacionais, novas linguagens, banco de dados de sistemas de
gestão comercial e outros componentes.
Corretiva: As mudanças são feitas para reparar defeitos no sistema.
Preventiva: As mudanças são feitas para melhorar o futuro da manutenção e
confiabilidade de um sistema. Ao contrário das últimas três razões para a mudança
reativa, a preventiva age proativamente para mudanças, que visam simplificar a
evolução futura.
Uma vez em funcionamento, defeitos são descobertos, o ambiente de operação
muda e novas necessidades dos usuários são criadas. Os esforços de desenvolvimento de
software resultam na entrega de um produto de software que satisfaça os requisitos dos
usuários, assim o software tem que mudar ou evoluir.
A fase de manutenção no ciclo de vida do software inicia após o período de
garantia ou suporte, após a entrega do software, mas as atividades de manutenção
ocorrem muito mais cedo. Esta manutenção segue definições criadas nas seguintes
normas, conforme o quadro 2 abaixo:
Norma
Definição
IEEE 1219
Define a alteração do software após a entrega, com atividades para:
corrigir falhas, implementar melhorias, criar interface com outros
sistemas, adaptar programas para diferentes hardwares e softwares,
migração de sistemas legados e aposentar o software.
IEEE 12207
Descreve o processo para o ciclo de vida do software e identifica as
principais atividades da manutenção do mesmo.
IEEE 14764
Define a nível internacional, a manutenção de software nas mesmas
condições da norma IEEE 12207.
Quadro 2 - Definições de Manutenção de Software (Fonte: próprio autor).
Lehman e Belady (1985) realizaram a maioria dos trabalhos referentes a
dinâmica de evolução do programa focando nas mudanças do sistema. Com base nestes
estudos propuseram um conjunto de leis referentes as mudanças nos sistemas (Leis de
Lehman).
Durante vinte anos, os estudos de Lehman levaram a formulação de oito leis
conforme mostra a quadro 3, todas relacionadas a manutenção e ciclo de vida de
software (SWEBOK, 2004).
Lei
Descrição
Mudança Contínua
Um programa usado e ambiente de produção deve mudar
necessariamente ou se torna progressivamente menos útil.
Complexidade crescente
A medida que um programa muda, sua estrutura tende a se
tornar mais complexa. Recursos devem ser dedicados para
preservar e simplificar a estrutura.
Evolução de Programa
de Grande Porte
A evolução do programa é um processo auto-regulável.
Atributos de sistemas como tamanho, tempo entre releases e
número de erros reportados são quase invariáveis em cada
versão do sistema.
Estabilidade
Organizacional
Durante o ciclo de vida, sua taxa de desenvolvimento é
quase constante e independente de recursos dedicados ao
desenvolvimento.
Conservação de
Familiaridade
Durante o ciclo de vida de um sistema, mudanças
incrementais em cada versão são quase constantes.
Crescimento Contínuo
As funcionalidades oferecidas pelo sistema devem aumentar
continuamente para manter a satisfação do usuário.
Qualidade em Declínio
A qualidade do sistema entrará em declínio a menos que eles
sejam adaptados a mudanças em seus ambientes
operacionais.
Sistema de Feedback
Os processos de evolução incorporam um sistema de
feedback com vários agentes e loops e você devem tratá-los
para conseguir aprimoramentos significativos de produto.
Quadro 3 - As oito leis de Lehman relacionadas ao ciclo de vida e manutenção
do software (LEHMAN, 1985).
As organizações modificam software, para corrigir erros, ou para melhorar o
desempenho, durabilidade, qualidade ou outros atributos. Isto tudo é de acordo com a
primeira lei da Lehman: “Um grande programa que é usado sofre mudança contínua ou
se torna progressivamente menos útil” (SEACORD, 2003).
O ciclo de vida do software representa as etapas pelas quais o projeto passa por
desenvolvimento e utilização em uma organização. Conforme a figura 2 (SEACORD,
2003) verifica-se a existência de uma atividade continua de desenvolvimento, até que
um novo sistema entre em operação.
Figura 2 - Ciclo de Vida de Manutenção de Software (Fonte: próprio autor)
Construir um novo sistema computadorizado normalmente torna-se uma tarefa
difícil. Visando amenizar esta tarefa, existem métodos de conversão que reduzem o
impacto gerado pela introdução de novas tecnologias (O’ BRIEN, 2006), conforme pode
ser observado na figura 3 abaixo.
Figura 3 - Métodos de Conversão para Redução de Impacto (O’ BRIEN, 2006).
As definições destas quatro formas de conversão podem ser observadas no
quadro quatro.
Conversão
Definição
Paralela
O sistema legado e o sistema novo funcionam em paralelo até que o
a equipe de desenvolvimento e a administração concordem em
utilizar somente o novo. Resultados e desempenhos são avaliados
nesta etapa.
Piloto
Um departamento ou estabelecimento serve como local de teste até
que os desenvolvedores decidam implantar em toda a empresa.
Por Etapas
Parte da nova aplicação ou alguns departamentos são convertidos,
um de cada vez permitindo a implantação de forma gradual.
Direta
Os erros podem ser identificados e corrigidos e o novo sistema passa
a ser o único em uso a partir de determinado momento.
Quadro 4 - Definição de Métodos de Conversão (Fonte: próprio autor)
Segundo SOMMERVILLE (2003), assim que o software é colocado em uso,
novos requisitos emergem, e os requisitos existentes são modificados à medida que a
empresa que executa esse software passa por modificações, tornando impossível
produzir sistemas de qualquer tamanho que não precisem ser modificados.
Mesmo após serem entregues, softwares necessitam ser modificados, seja para
correção de bugs, adição de novas funcionalidades ou aperfeiçoamento das já existentes,
em suma, eles sempre evoluem, em resposta às exigências de mudanças.
2.2. Métodos Ágeis
Segundo TALES (2005), as indústrias de software buscam a décadas técnicas de
desenvolvimento que possam reduzir os riscos em projetos e tornar esta atividade mais
produtiva.
Em 1968, com o surgimento da engenharia de software surgiram inúmeras
propostas para melhorar o desempenho dos projetos, iniciados pelo processo de
desenvolvimento linear e seqüencial (em cascata) até aos atuais processos ágeis de
desenvolvimento. Este novo conceito surge da necessidade de enxergar as de forma
diferente o processo de engenharia de software.
Engenharias tradicionais colocam grande ênfase em projetar antes de construir,
gerando softwares que tendem a evitar mudanças (HILMER, 2004).
A relação entre o custo e o momento em que a alteração é adicionada na
engenharia tradicional pode ser observada na figura 4, deixando evidente que quanto
mais tempo uma alteração ou funcionalidade é postergada, maior será o custo aplicado
sobre tal.
HILMER (2004) define a nova engenharia de software utilizando métodos ágeis,
como a forma que permite constantemente alterar o código sem que a qualidade seja
comprometida. A relação custo e momento em que a alteração é adicionada para este
caso pode ser observado na figura 5.
Figura 4 - Custo de Adição de Funcionalidade na Engenharia Tradicional
Figura 5 - Custo de Adição de Funcionalidade na Nova Engenharia
A introdução dos métodos ágeis na engenharia de software visa reduzir o ciclo
de vida do mesmo, e com isto acelerar seu desenvolvimento disponibilizando versões do
sistema com funcionalidades mínimas, executando exatamente o que foi solicitado. As
demais funcionalidades, bem como aperfeiçoamentos e correções de bugs, são
adicionadas nas versões subseqüentes com base em um processo continuo e interativo.
Métodos ágeis aplicam uma coleção de práticas guiadas por princípios e valores
que podem ser aplicados por desenvolvedores de software diariamente.
Em novembro de 2001, um grupo de dezessete profissionais, com referencias
mundiais em desenvolvimento, reuniu-se para debater as melhores formas de
desenvolvimento de software. Desta reunião surgiu o Manifesto Ágil para
Desenvolvimento de Software.
Os seguintes princípios
(AGILEMANIFESTO, 2010):
foram
definidos
para
o
Manifesto
- Indivíduos e Interações são mais importantes que processos e ferramentas;
Ágil
- Software funcionando é mais importante do que documentação completa e
detalhada;
- Colaboração com o cliente é mais importante do que negociação de contratos;
- Adaptação a mudanças é mais importante do que seguir o plano inicial;
Conforme TALES (2005), graças aos métodos ágeis, o cliente é inteiramente o
piloto do seu projeto e obtém muito rapidamente uma primeira produção do seu
software.
Dentre as principais metodologias ágeis destacam-se as seguintes: RAD, DSDM,
XP, FDD e Scrum.
2.2.1. Scrum
O Scrum é baseado em controle de processos empíricos que visam uma
abordagem interativa e incremental, otimizando assim a previsibilidade e o controle de
riscos. Pode ser encarado como um framework, e não um processo ou uma técnica de
desenvolvimento, onde se pode empregar processos e técnicas.
Seu papel é fazer transparecer a eficácia relativa das suas práticas de
desenvolvimento para que você possa melhorá-las (SCHWABER, 2008).
O Scrum é um processo para construir software incremental em ambientes
complexos, onde os requisitos não são claros ou mudam com muita freqüência
(HILMER, 2004).
Com princípios semelhantes ao XP, possui equipes pequenas, requisitos poucos
estáveis ou desconhecidos e interações curtas para promover a visibilidade do
desenvolvimento.
As equipes trabalham as funcionalidades definidas no inicio de cada sprint,
diariamente é realizada uma reunião de aproximadamente 15 minutos onde a equipe
expõe o que está sendo feito e o que será feito. O tema destas reuniões é focado sobre
três perguntas:
- O que você realizou desde a última reunião?
- Quais problemas você encontrou?
- Em que você trabalhará até a próxima reunião?
2.3. ITIL
Apesar de ser confundida muitas vezes com uma metodologia, ITIL é na verdade um
conjunto de boas práticas. Foi criada pela secretária de comércio do governo inglês
(Office of Government Commerce, OGC) para definir as melhores práticas para a gestão
da área de TI de empresas públicas e privadas, tornou-se recentemente uma norma (BS1500), um anexo da ISO 9000/2000.
Conforme (ITIL, 2010), o foco deste modelo é descrever os processos
necessários para gerenciar a infra-estrutura de TI eficientemente e eficazmente de modo
a garantir os níveis de serviço acordados com os clientes internos e externos.
O ITIL fortalece a idéia de que as organizações estão cada vez mais dependentes
da área de TI, como uma forma de satisfazer e alcançar as necessidades impostas pelas
regras de negócio de pequenas, médias e grandes corporações. (ITIL, 2010).
Para minimizar o desperdício de tempo gasto em implementação, o responsável
pela equipe de desenvolvimento deve alocar o desenvolvedor que mais se encaixe com a
atividade que será desenvolvida, para isto, ele deve conhecer bem sua equipe e como
cada indivíduo trabalha, individualmente e coletivamente dentro da equipe, qual sua real
produtividade, seu nível de qualidade na aplicação de uma implementação.
Para conseguir estas métricas, podem ser utilizados alguns conceitos de
indicadores obtidos no ITIL, onde os principais são: Gestão de Incidentes (Incidents),
Gestão de Problemas (Problem).
2.3.1. Gestão de Incidentes
Segundo ITIL (2010), um incidente é todo evento que não faz parte da rotina do modelo
de gestão de um serviço, podendo gerar uma interrupção ou redução na qualidade do
serviço prestado.
Gerenciar incidentes é garantir que estes eventos atípicos sejam solucionados o
mais breve possível, minimizando o impacto e garantindo que estes atendam aos níveis
de serviços pré-estabelecidos entre TI e cliente (AQUINO, 2008).
Em suma, o gerenciamento de incidentes possui quatro objetivos principais:
- Resolver os incidentes o mais rápido possível, restabelecendo a normalidade do
serviço no prazo acordado no ANS;
- Manter a comunicação dos status dos incidentes aos usuários;
- Definir as prioridades dos incidentes e classificá-los para os grupos de
atendimento para que seja cumprido o prazo de resolução;
- Avaliar os incidentes e as possíveis causas, informando ao Gerenciamento de
Problemas.
Dentre as atividades do gerenciamento de incidentes, cita-se: Detecção de
incidentes e registro; Classificação e suporte inicial; Investigação e diagnóstico;
Resolução e restauração; Fechamento do incidente; Responsabilidade pelo incidente,
monitoração, acompanhamento e comunicação.
O diagrama exibido na figura 6 abaixo mostra as atividades pertencentes ao
gerenciamento de incidentes.
Figura 6 - Diagrama de Atividades na Gerencia de Incidentes (ITIL, 2010)
Quanto à classificação, a Gerência de Incidentes utiliza-se de três fatores:
prioridade, urgência e impacto.
A prioridade é definida em relação ao impacto que o incidente tem sobre o
negócio da organização, pode ser definido na ANS. A urgência é a prioridade com que o
incidente deve ser resolvido e o Impacto é o grau em que a provisão do serviço é
interrompido. No quadro 5, pode-se observar a classificação das prioridades.
Código da Prioridade
Descrição Prazo para Solução
1
Crítico
1 hora
2
Alto
8 horas
3
Médio
24 horas
4
Baixo
48 horas
5
Planejado
Planejado
Quadro 5 - Classificação de Prioridades
Com base na urgência e no impacto, pode ser gerada uma matriz que define sua
relação com os serviços de suporte, como pode ser observado na figura 7 abaixo.
Figura 7 - Matriz de Impacto x Urgência
Outros aspectos pertencentes às atividades de gerencia de incidentes podem ser
definidos como: Detecção de Incidentes e Registros, Classificação e Suporte Inicial,
Investigação e Diagnóstico, Resolução e Recuperação e o Fechamento do Incidente.
2.3.2. Gestão de Problemas
Segundo HALLAIS (2009), a Gestão de Problemas lida com os incidentes que não
puderam ser resolvidos pela Gestão de Incidentes e foram direcionados para identificar a
causa raiz do incidente.
Este processo foca em encontrar a relação entre os incidentes, problemas e erros
conhecidos, onde estes três itens formam a chave para o conhecimento da causa raiz do
incidente.
O principio básico está em começar com muitas possibilidades e estreitar até
encontrar a causa raiz final (BON, 2005).
O gerenciamento de problemas, de acordo com ITIL (2010), possui quatro atividades
primárias, divididas em sub-atividades: Controle de Problemas (Identificar e Registrar,
Classificar, Pesquisar e Diagnosticar), Controle de Erros (Identificar e Registrar,
Avaliar, Registrar a Solução e o Fechamento, Monitorar o Problema), Gerenciamento
Proativo de Problemas (Analisar tendências, Medida de suporte com objetivos
definidos, Proporcionar informações a empresa) e Finalização de revisão dos
problemas graves.
O controle de problemas é responsável por encontrar a solução definitiva para a
causa raiz do incidente. Este possui atividades específicas, conforme pode ser observado
na figura 8 abaixo.
Figura 8 - Atividades do Controle de Problemas (ITIL, 2010)
O controle de erros é o processo onde os erros já conhecidos são pesquisados e
corrigidos. As atividades específicas do controle de erros são apresentadas na figura 9.
Figura 9 - Atividades do Controle de Erros (ITIL, 2010)
HALLAIS (2009) define o erro como sendo uma condição identificada por meio
de um diagnostico bem sucedido da causa raiz de um problema, onde a falha é
confirmada e a solução provisória é identificada.
O processo de identificação de erros pode ser feito de maneira reativa ou próativa. Esta ultima é tida como sendo o modo ideal, pois o cliente não percebe qualquer
alteração em seu sistema.
O modo reativo visa eliminar as origens causadoras de incidentes e minimizar as
conseqüências, soluções de contorno e apresentação de propostas. Neste modo, o cliente
já está ciente do incidente e normalmente já foi afetado.
O modo pró-ativo visa prevenir incidentes e problemas, melhorando a
produtividade, realizando analise de tendências, identificando os pontos vulneráveis e as
fraquezas. Como mencionado anteriormente, neste modo, o cliente não foi afetado e
desconhece a existência do erro.
3. Estado da Arte
Nesta seção serão apresentados estudos feitos em sistema que apresentam
funcionalidades semelhantes as do sistema proposto, são eles: BaseCamp, ToDo List e
ClockingIT.
O BaseCamp é uma ferramenta de colaboração e gerenciamento de projetos
baseada em web, onde é possível distribuir tarefas, verificar prazos e centralizar o
feedback.
Conforme 37SIGNALS (2010), o BaseCamp foi criado em 2004 e desde então
mantido pela 37Signals, ele aborda a gerencia de projetos de um ângulo totalmente
inovador até então, com enfoque na colaboração e na comunicação.
O BaseCamp é um software pago, mas possui uma versão free, capaz de
gerenciar apenas um projeto. Para iniciar o gerenciamento, basta efetuar o cadastro em <
http://basecamphq.com/ >, que será redirecionado para a sua página de Dashboard.
O BaseCamp mostra-se uma ferramenta extremamente útil no gerenciamento de
projetos, permitindo a criação de tarefas com pessoal responsável definido, to-do lists,
controle de estimativa de tempo e compartilhamento de arquivos. Todas suas
funcionalidades são acessadas com poucos cliques, porem, a definição de carga de
trabalho torna-se demorada.
O ToDoList é uma ferramenta open source para gestão de tarefas, mantido pela
AbstractSpoon desde 2004 e funciona apenas em desktop. Apresenta uma interface
altamente intuitiva.
Esta ferramenta permite subdividir uma atividade em partes menores de forma
muito fácil mantendo dentro de um agrupamento criado sobre a tarefa original. Cada
projeto possui seu arquivo de TaskList, o que permite gerenciar inúmeros projetos mas
não todos sobre a mesma visão.
Para executar o programa, basta efetuar o download diretamente do site
(www.abstractspoon.com), não é necessário realizar a instalação, o que permite que o
sistema rode diretamente de um Pen Drive.
O ToDoList surgiu como uma ferramenta para gerenciamento de tarefas, mas
encaixa-se perfeitamente no gerenciamento de projetos (TODOLIST, 2010). Permitindo
a criação de tarefas definindo o responsável, sua estrutura de to-do list permite uma
visualização ampla das atividades em desenvolvimento e em espera, a fácil divisão de
uma atividade em sub-atividades menores é um dos pontos em destaque deste sistema.
Todas suas funcionalidades são acessadas facilmente e estão centralizadas em
uma única janela. O fator negativo para este sistema fica em não ser possível visualizar
as tarefas para projetos distintos em um local centralizado.
O ClockingIT é uma ferramenta web, totalmente free, de gerenciamento de
projetos, colaboração e TimeTracking, que permite total controle sobre as tarefas e sobre
o tempo gasto nas mesmas, com foco em desenvolvimento de software e manipulação
de grandes quantidades de tarefas.
O ClockingIT surgiu em 2003 como uma ferramenta para auxiliar a consultoria
prestada por Erlend e Ellen Simonsen, um casal residente em Oslo, Noruega. Erlend é
responsável por toda a programação, enquanto Ellen é responsável pelo design de
interface, gráficos e cores.
Conforme CLOCKINGIT (2010), o ClockingIT busca gerenciar seus planos de
tarefas e a agenda, permitindo verificar se a entrega de determinado requisito está
atrasada ou adiantada.
O ClockingIT mostra-se uma excelente ferramenta para gerenciamento de
projetos, permitindo a criação de tarefas com pessoal responsável definido, to-do lists
separados por tarefas, controle de estimativa de tempo, indicadores de BurnUp e
BurnDown e compartilhamento de arquivos.
Todas suas funcionalidades são acessadas com poucos cliques. Possui um grande
diferencial em relação às outras ferramentas analisados, o Gráfico de Gantt, que permite
visualizar de forma bastante clara o andamento dos projetos bem como o desempenho
dos elementos da equipe.
4. Solução Implementada
Nesta seção serão apresentadas informações referentes ao sistema que foi
implementado, como uma breve visão do sistema, o cenário existente antes do projeto se
desenvolvido, a modelagem utilizada, telas e a apresentação dos resultados preliminares
já obtidos. O sistema recebeu o nome de CaseSupport.
4.1. Visão
O sistema implementado é capaz de centralizar as informações de incidentes e
problemas, gerar uma base de conhecimento, controlar a distribuição de tarefas,
estimativas de tempo, tempo gasto por atividade e medir a qualidade de
desenvolvimento sobre determinada implementação ou de indivíduo específico.
Como uma das metas deste projeto, esta ferramenta é capaz de agilizar a
distribuição de tarefas de forma funcional e efetiva. Para que tal meta seja atingida, o
sistema se encarregará de gerar os seguintes índices: qualidade e produtividade.
Produtividade: será a quantidade de tarefas que a equipe será capaz de produzir em
determinado período de tempo, que pode ser estabelecido como sendo o período entre as
interações.
Qualidade: será basicamente o índice de sucesso do desenvolvedor em concluir
determinada tarefa, de acordo com seu grau de dificuldade. Muitas vezes ocorre de uma
tarefa ser liberada para homologação e retornar, pois não atingiu a funcionalidade total
esperada ou surgiram outros erros decorrentes da alteração efetuada no código fonte. O
número destas “reincidências” irá afetar a qualidade do trabalho realizado.
4.2. Cenário Existente Antes do Projeto
No cenário existente antes da implantação deste sistema, o controle dos incidentes e
problemas pendentes era feito sem nenhum tipo de controle. Não existia nenhuma forma
de rastrear o histórico das funcionalidades, saber quem solicitou ou quem a
implementou.
O controle era efetuado de maneira manual, sem nenhuma regra ou padrão para
com as informações cadastradas, feito sobre planilha eletrônica, onde o seu modelo pode
ser visto na figura 10.
Figura 10 - Modelo de controle efetuado antes da implantação do sistema
1
(Fonte: adaptação de arquivos IntelliComm Informática LTDA )
Este controle, além de não possuir nenhum recurso que auxilie tratamento das
informações, não apresentava nenhuma garantia de controle sobre prazos e estimativas,
1
Empresa onde o software implementado e utilizado como base para os testes comparativos.
gerando inúmeros transtornos no momento de prever a entrega de determinadas
solicitações.
4.3. Modelagem
Nesta seção, alguns dos principais diagramas deste projeto serão apresentados a fim de
exemplificar a arquitetura utilizada durante sua concepção.
A figura 28 mostra o diagrama de caso de uso para a abertura de um chamado,
através do suporte telefônico, por e-mail ou diretamente pela web.
Figura 11 - Diagrama de Caso de Uso para abertura de chamados
Neste diagrama, o usuário do sistema detecta um erro, comunica o suporte por email ou telefonema, este dará a entrada das informações no banco de dados do sistema
de controle, quando feito via web o cadastro se dará de forma automática. Certos
incidentes tornam-se problemas, estes são tratados pelo desenvolvimento que após a
conclusão da implementação libera para que os testes de aceitação sejam feitos pelo
suporte.
A figura 29 mostra o diagrama conceitual de classes, contendo a relação das
principais encontradas no sistema.
Figura 12 - Diagrama Conceitual de Classes do CaseSupport
No diagrama acima, observa-se a centralização dos processos sobre a classe
TCases, que é responsável pelo registro de tarefas, bem como incidentes e problemas.
Por último, a figura 30 mostra o diagrama de entidade-relacionamento (ER) das
principais tabelas que compões o sistema.
Figura 13 - Diagrama ER do Sistema CaseSupport
Como pode ser observado no ER, basicamente todo sistema gira em torno das
tarefas, representado pela tabela “CASES”.
4.4. O Sistema
Nesta seção serão apresentadas algumas das telas do sistema pertencente a este projeto.
Na figura 14, alguns itens podem ser observados, são eles: histórico do
atendimento (1), lista de tarefas (2), dados do atendimento (3) e histórico de alterações
(4).
Figura 14 - Tela Principal do Sistema de Controle de Processos
Tratando-se da janela principal do sistema, esta foi desenvolvida a fim de reunir
toda a informação necessária para o acompanhamento de atendimentos realizados, bem
como a atual situação de uma implementação que está sendo realizada.
Além da tela principal do sistema, é possível observar na figura 15 a tela para
gerenciamento de arquivos anexos que permite que qualquer informação gerada
externamente seja inserida na base de dados do sistema para consultas posteriores,
mesmo que o arquivo originalmente adicionado não exista mais fisicamente no disco.
Na figura 16 pode-se observar a tela de auxilio e elaboração do plano de teste,
gerada de forma automática pelo sistema, necessitando apenas que o responsável pelo
desenvolvimento da funcionalidade a ser testada informe alguns passos para que se
chegue ao problema relacionado.
A figura 17 mostra o controle de alterações por versão, gerado a partir dos dados
contidos nas ocorrências cadastradas no sistema já concluídas que anteriormente a
correção evoluíram de incidente para problemas necessitando alteração no código da
aplicação, gerando conseqüentemente uma nova versão de sistema.
Figura 15 - Tela para controle de arquivos anexos
Figura 16 - Plano de Teste elaborado com Auxilio do CaseSupport
Figura 17 - Controle de Alterações por Versão
Além das telas apresentadas, o sistema conta com outras de menor irrelevância,
como por exemplo: cadastro de clientes, cadastro de usuários, cadastro de notas, filtros e
gráficos.
Outra janela considerada de extrema importância dentro da sistemática
apresentada pelo sistema é a de DashBoard, que pode ser vista na figura 18 ainda em
fase de planejamento.
Figura 18 - DashBoard gerado para controle de interações no CaseSupport
Nesta última tela, é possível ter a visão geral da interação atualmente em
andamento. Cada tipo de “nota” (status) será representado por uma cor diferente,
facilitando a visualização e compreensão do que está sendo feito no momento. Existirá a
facilidade de atribuição de tarefas para usuários com um simples drag-and-drop das
“notas” entre usuários.
4.5. Resultados Preliminares
Após a implantação do sistema, notou-se um aumento significativo no número de
incidentes e problemas concluídos semanalmente ao longo de dois meses de
acompanhamento, sem aumento no quadro funcional da empresa. Conforme pode ser
visto na figura 19, é apresentada a média de dois meses antes e dois meses depois da
implantação. Nota-se que anteriormente a média semanal era de 11, 14, 15 e 16
respectivamente tendo como média mensal 14 entregas semanais, enquanto a média
semanal obtida após a implantação ficou em 18, 20, 21 e 24 respectivamente, tendo
como média mensal 20,75 entregas semanais.
Figura 19 - Gráfico comparativo entre cenários de entrega
Os valores acima são referentes apenas a solicitações entregues pela equipe de
desenvolvimento, ressaltando que, foi constatado aumento de proporções semelhantes
no setor de suporte, devido a grande parte das informações necessárias para solução de
incidentes estar contida na base de conhecimento gerada gradualmente pelo próprio
sistema.
5. Considerações Finais
Todas as atividades relacionadas ao desenvolvimento de produtos de software sofrem
alterações, motivadas por inúmeros aspectos, como novas necessidades de mercado,
novas necessidades do cliente, crescimento/diminuição dos negócios, restrições de
orçamento ou cronograma.
Para acompanhar estas mudanças e manter o nível de satisfação do usuário final
sem elevar os custos de produção do software, é necessário possuir mecanismos para
controle destas alterações que proporcionem métodos de gerenciar a equipe de
desenvolvimento como: definição de tarefas, controle de estimativa de tempo, controle
do tempo gasto com implementações, capacidade e qualidade de produção.
Fica evidente que ao utilizar um sistema que proporcione as métricas citadas
anteriormente e que este utilize alguns dos conceitos presentes nos métodos ágeis, estes
ganhos podem ser ainda mais elevados. Este tipo de sistema tem se mostrado como
sendo fundamental para empresas que lidam com o desenvolvimento de software, pois
todo o sistema muda, ele necessita ser modificado, seja para correção de bugs, adição de
novas funcionalidades ou aperfeiçoamento das já existentes, em suma, eles sempre
evoluem, em resposta às exigências de mudanças.
O sistema de controle de requisitos não irá sanar todas as necessidades de
negócio envolvidas na produção de software, mas irá proporcionar grande auxilio na
distribuição de tarefas e fechamento de cronogramas, permitindo produzir mais em
menos tempo.
5.1. Limitações
Tendo em vista a vasta gama de informações que pode-se extrair de um controle de
processos devidamente implementado, está evidente que este projeto abrange um
pequeno percentual destas informações. Uma maior captação dos mesmos pode
potencializar os resultados obtidos e com isto elevar os ganhos de qualidade e
produtividade bem como a satisfação do cliente.
Este projeto parte da premissa de que um setor de nível estratégico já definiu
dentre as solicitações quais são de maior prioridade para serem atendidas durante a
próxima interação, o sistema encarrega-se apenas de distribuí-las de modo que o maior
número possível, com as maiores prioridades, seja entregue no prazo esperado. Para este
caso, será extremamente interessante integrar ao sistema a capacidade de definição de
solicitações a serem desenvolvidas, sem a necessidade de interferência de outros níveis
coorporativos.
5.2. Trabalhos Futuros
Além de sanar as limitações encontradas, como pontos passiveis de implementação ou
melhoria, destacam-se alguns pontos, tais como:
- Módulo para controle WEB: Visa permitir que incidentes/problemas sejam
inseridos na base de dados do sistema pelos usuários que utilizam o sistema final
produzido pela empresa.
- Gráficos para controle de tempo: Os gráficos estão entre as melhores formas de
exemplificar/demonstrar dados estatísticos, como sugestões futuras o gráfico de Burning
Down e o modelo de Gantt podem gerar informações interessantes para se agregar ao
sistema.
- Estender o sistema para abordar mais profundamente rotinas de nível
estratégico e design do ITIL v3 a fim de eliminar a interferência de outros setores da
corporação.
6. Conclusão
Uma vez que todos os softwares sofrem alterações, sejam elas motivadas por novas
necessidades de mercado, novas necessidades do cliente, crescimento/diminuição dos
negócios, restrições de orçamento ou cronograma, as empresas que os desenvolve
necessita acompanhar estas mudanças e manter o nível de satisfação do usuário final
sem elevar os custos de produção do software.
Diante deste fato, é necessário possuir mecanismos para controle destas
alterações que proporcionem métodos de gerenciar a equipe de desenvolvimento como:
definição de tarefas, controle de estimativa de tempo, controle do tempo gasto com
implementações, capacidade e qualidade de produção.
Fica evidente que ao utilizar um sistema que proporcione as métricas citadas
anteriormente e que este utilize alguns dos conceitos presentes nos métodos ágeis, estes
ganhos podem ser ainda mais elevados, devido ao aumento dos os lucros obtidos através
da maior entrega de funcionalidades e correções bem como nos atendimentos de suporte
realizados.
Este tipo de sistema tem se mostrado como sendo fundamental para empresas
que lidam com o desenvolvimento de software, pois todo o sistema muda, ele necessita
ser modificado, seja para correção de bugs, adição de novas funcionalidades ou
aperfeiçoamento das já existentes, em suma, eles sempre evoluem, em resposta às
exigências de mudanças.
O sistema de controle de requisitos não irá sanar todas as necessidades de
negócio envolvidas na produção de software, mas irá proporcionar grande auxilio na
distribuição de tarefas e fechamento de cronogramas, permitindo produzir mais em
menos tempo.
Referencias
[37SIGNALS, 2010] 37SIGNALS. Simple small business software, collaboration,
CRM: 37signals. Disponível em: <http://37signals.com/>. Consultado em Junho de
2010.
[AGILEMANIFESTO, 2010] AGILEMANIFESTO, Manifesto for Agile Software
Development. Disponível em: <http://www.agilemanifesto.org>. Consultado em
Julho de 2010.
[AQUINO, 2008] AQUINO, Larissa R. Lira. Gerenciamento de Incidentes, segundo
ITIL. MBA Governança de Tecnologia da Informação. Faculdade Católica de Cuiabá,
2008.
[CLOCKINGIT, 2010] CLOCKINGIT. ClockingIT, Timetracking 2.0. Disponível em:
<http://www.clockingit.com/>. Consultado em Maio de 2010
[DESCHAMPS, 2008] DESCHAMPS, Alexandro. SWAROWAKY, Hugo H.
Gerencia de Configuração – Ápice da Engenharia de Software. 2008.
[HALLAIS, 2009] HALLAIS, Vitor; ALVES, Ramon. Gerencia de Serviços:
Gerenciamento de Problemas baseado no Modelo ITIL. Monografia de Engenharia
de Software, PUC-Minas, 2009.
[HILMER, 2004] HILMER, Gustavo. Métodos Ágeis – O que são métodos ágeis.
Graduação em Ciências da Computação, Universidade Federal de Brasília (UNB),
2004.
[ITIL, 2010] ITIL, ITIL® Home. Disponível em:
officialsite.com/home/home.asp>. Consultado em Julho de 2010.
<http://www.itil-
[LEHMAN, 1985] Lehman, M. M. Belady, L. A. Program evolution: processes of
software change. Orlando Academic Press, London, 1985.
[MANHÃES, 2005] MANHÃES, Vinícius. UM ESTUDO DE CASO DA ADOÇÃO
DAS PRÁTICAS E VALORES DO EXTREME PROGRAMMING.
Universidade Federal do Rio de Janeiro - UFRJ, IM / DCC, 2005.
[O’ BRIEN, 2006] O’ BRIEN, James A. Sistemas de informação e as decisões
gerenciais na era da Internet. James A. O’Brien; tradução Célio Knipel Moreira e
Cid Knipel Moreira. 2ª ed. São Paulo: Saraiva, 2006.
[SCHWABER, 2008] SCHWABER, Ken. SUTHERLAND, Jeff. Scrum Guide.
Scrum.Org, 2008.
[SEACORD , 2003] SEACORD, Robert C.; PLAKOSH, Daniel; LEWIS, Grace A.
Modernizing Legacy Systems: Software Technologies, Engineering Processes,
and Business Practices. Addison Wesley, 2003.
[SOMMERVILLE, 2003] SOMMERVILLE, Ian. Engenharia de Software; tradução
André Maurício de Andrade Ribeiro; revisão técnica Kechi Hirama. São Paulo:
Addison Wesley, 2003.
[SWEBOK, 2004] SWEBOK. Guide to the Software Engineering Body of
Knowledge.
IEEE:
Computer
Society,
2004.
Disponível
em:
<http://www2.computer.org/portal/web/swebok/htmlformat>. Consultado em Julho
de 2010.
[TALES, 2005] TELES, Vinícius Manhães, Um Estudo de Caso da Adoção das
Práticas e Valores do Extreme Programming. Orientador: Carlo Emmanoel Tolla
de Oliveira. Rio de Janeiro : UFRJ/IM, 2005. Dissertação (Mestrado em
Informática).
[TODOLIST, 2010] TODOLIST. ToDoList Resources AbstractSpoon Software.
Disponível em: <http://www.abstractspoon.com/>. Consultado em Maio de 2010.
[XP, 2010] XP, Extreme Programming (XP): A Gentle Introduction. Disponível em:
<http://www.extremeprogramming.org/>. Consultado em Agosto de 2010.
Download

Monografia ITIL e Métodos Ágeis - Rafael Passarela