EDITORIAL

                                                                                                D
                                                                                                          iversas metodologias de desenvolvimento de software voltadas para o con-
                                                                                                          trole têm sido elaboradas uma vez que um projeto de software, ao longo do
                                                                                                          seu ciclo de vida, tem uma grande quantidade de itens de informação tais
                                                                                                como documentos, código-fonte, dados, manuais e outros, produzidos e até modifi-
                                                                                                cados, pelos mais diversos motivos.
                                                                                                   Para que a qualidade do software seja garantida, em função destas modificações, é
Ano 2 - 24ª Edição - 2010 		                                           Impresso no Brasil       necessário que se faça uso da Gerência de Configuração de Software (GCS). A Gerên-
                                                                                                cia de Configuração de Software tem como objetivo gerenciar e controlar a evolução
                                                                                                de um software através do controle formal de versão e solicitação de mudanças. É
Corpo Editorial                                                                                 uma forma sistemática e organizada de controlar as modificações de um software
                                                                                                tornando possível manter sua integridade ao longo do tempo. A quantidade de itens
Colaboradores                                                                                   que podem estar sob controle da GCS e os níveis de controle exigidos sobre estes
Rodrigo Oliveira Spínola                                                                        itens irá variar de empresa para empresa ou mesmo de projeto para projeto. Sendo
rodrigo@sqlmagazine.com.br                                                                      assim, o uso desta prática em conformidade com modelos de maturidade mantidos
Marco Antônio Pereira Araújo                                                                    por entidades que possuam credibilidade nacional e internacional, e também o uso
Eduardo Oliveira Spínola                                                                        de ferramentas adequadas que garantam a qualidade deste processo, é fundamental
                                                                                                para que uma empresa obtenha êxito e reconhecimento.
Capa e Diagramação
                                                                                                   Para empresas de grande porte, isto não chega a ser um grande problema pois
Romulo Araujo - romulo@devmedia.com.br
                                                                                                normalmente se dispõem de capital e pessoal qualificado para manter tais práticas.
Coordenação Geral                                                                               Entretanto, quando voltamos a olhar para as pequenas empresas, o cenário é exata-
Daniella Costa - daniella@devmedia.com.br                                                       mente o oposto.
                                                                                                   Neste contexto, a Engenharia de Software Magazine destaca nesta edição uma ma-
Revisor e Supervisor                                                                            téria cujo objetivo é mostrar uma solução especifica, de boa qualidade e baixo custo,
Thiago Vincenzo - thiago.v.ciancio@devmedia.com.br
                                                                                                que atenda as exigências dos modelos de maturidade e que possa ser utilizada para
Na Web                                                                                          implementar a Gerência de Configuração de Software em pequenas empresas. Uma
www.devmedia.com.br/esmag                                                                       leitura muito interessante.
                                                                                                   Além desta matéria, esta edição traz mais seis artigos:
                                                                                                   • Automatizando Testes Funcionais em Aplicações Web
                                                                         Apoio
                                                                                                   • Testes de segurança
                                                                                                   • A Comunicação no Processo de Software
                                                                                                   • Testes funcionais automatizados com Hudson e Selenium RC
                                                                                                   • Medição de Software
                                                                                                   • Análise Quantitativa de Riscos e suas Técnicas

                                                                                                  Desejamos uma ótima leitura!
                                                                                                  Equipe Editorial Engenharia de Software Magazine
Atendimento ao Leitor
A DevMedia conta com um departamento exclusivo para o atendimento ao leitor.
Se você tiver algum problema no recebimento do seu exemplar ou precisar de                                     Rodrigo Oliveira Spínola
algum esclarecimento sobre assinaturas, exemplares anteriores, endereço de                                     rodrigo@sqlmagazine.com.br
bancas de jornal, entre outros, entre em contato com:                                                          Doutorando em Engenharia de Sistemas e Computação (COPPE/UFRJ). Mestre em
                                                                                                               Engenharia de Software (COPPE/UFRJ, 2004). Bacharel em Ciências da Computação
Cristiany Queiróz– Atendimento ao Leitor                                                                       (UNIFACS, 2001). Colaborador da Kali Software (www.kalisoftware.com), tendo minis-
www.devmedia.com.br/mancad
(21) 2220-5338                                                                                                 trado cursos na área de Qualidade de Produtos e Processos de Software, Requisitos e
Kaline Dolabella                                                                                               Desenvolvimento Orientado a Objetos. Consultor para implementação do MPS.BR. Atua
Gerente de Marketing e Atendimento                                                                             como Gerente de Projeto e Analista de Requisitos em projetos de consultoria na COPPE/
kalined@terra.com.br
(21) 2220-5338                                                                                                 UFRJ. É Colaborador da Engenharia de Software Magazine.

                                                                                                               Marco Antônio Pereira Araújo - Editor
Publicidade
                                                                                                               (maraujo@devmedia.com.br)
Para informações sobre veiculação de anúncio na revista ou no site entre em
                                                                                                               Doutor e Mestre em Engenharia de Sistemas e Computação pela COPPE/UFRJ - Li-
contato com:
                                                                                                               nha de Pesquisa em Engenharia de Software, Especialista em Métodos Estatísticos
Kaline Dolabella
publicidade@devmedia.com.br                                                                                    Computacionais e Bacharel em Matemática com Habilitação em Informática pela
                                                                                                               UFJF, Professor e Coordenador do curso de Bacharelado em Sistemas de Informação
Fale com o Editor!
                                                                                                               do Centro de Ensino Superior de Juiz de Fora, Professor do curso de Bacharelado em
É muito importante para a equipe saber o que você está achando da revista: que tipo de artigo
                                                                                                               Sistemas de Informação da Faculdade Metodista Granbery, Professor e Diretor do Cur-
você gostaria de ler, que artigo você mais gostou e qual artigo você menos gostou. Fique a
                                                                                                               so Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Fundação
vontade para entrar em contato com os editores e dar a sua sugestão!
                                                                                                               Educacional D. André Arcoverde, Analista de Sistemas da Prefeitura de Juiz de Fora,
Se você estiver interessado em publicar um artigo na revista ou no site SQL Magazine,
                                                                                                               Colaborador da Engenharia de Software Magazine.
entre em contato com os editores, informando o título e mini-resumo do tema que você
gostaria de publicar:
                                                                                                               Eduardo Oliveira Spínola
                                                                                                               (eduspinola@gmail.com)
Rodrigo Oliveira Spínola - Colaborador
                                                                                                               É Colaborador das revistas Engenharia de Software Magazine, Java Magazine e SQL Ma-
editor@sqlmagazine.com.br
                                                                                                               gazine. É bacharel em Ciências da Computação pela Universidade Salvador (UNIFACS)
                                                                                                               onde atualmente cursa o mestrado em Sistemas e Computação na linha de Engenharia
                                                                                                               de Software, sendo membro do GESA (Grupo de Engenharia de Software e Aplicações).
Caro Leitor
    Caro Leitor,
    Para esta edição, temos um conjunto de 4 vídeo aulas. Estas vídeo aulas estão disponíveis para download no Portal da En-
    genharia de Software Magazine e certamente trarão uma significativa contribuição para seu aprendizado. A lista de aulas
    publicadas pode ser vista abaixo:

      Tipo: Validação,Verificação & Teste
      Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte I -
                                                                                              Tipo: Validação,Verificação & Teste
                                                                                              Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte III -
      Explorando Casos de Uso para apoiar Testes                                              Projeto dos Testes a partir de Casos de Uso
      Autor: Arilo Claudio Dias Neto                                                          Autor: Arilo Claudio Dias Neto
      Mini-Resumo: Nesta vídeo-aula é apresentado como preparar um modelo de casos            Mini-Resumo: Nesta vídeo-aula é apresentado com detalhes o último passo que
      de uso e suas especificações para apoiar nas atividades de teste. São apresentadas as   compõe o processo para apoiar no projeto de testes de software a partir de casos de
      informações que devem compor a especificação de um caso de uso e em seguida um          uso: a alocação de casos e procedimentos de teste. Para isso, é seguido um caso de uso
      template de especificação de casos de uso. Ao final, é apresentado um processo para     de exemplo (REALIZAR DEPÓSITO) e passamos por todas as etapas para construção dos
      apoiar no projeto de testes de software a partir de casos de uso.                       testes.Neste momento utilizamos os critérios para geração dos testes (particionamento
                                                                                              por equivalência, análise do valor limite e grafo de causa-efeito) apresentados em
      Tipo: Validação,Verificação & Teste                                                     aulas anteriores.
      Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte II -
      Projeto dos Testes a partir de Casos de Uso                                             Tipo: Validação,Verificação & Teste
      Autor: Arilo Claudio Dias Neto                                                          Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte IV – Exercício
      Mini-Resumo: Nesta vídeo-aula é apresentado com detalhes o processo para                Autor: Arilo Claudio Dias Neto
      apoiar no projeto de testes de software a partir de casos de uso, citado na aula        Mini-Resumo: Nesta vídeo-aula é apresentado um outro exemplo de construção de
      anterior. Ele é formado por uma sequência de 4 passos que vão desde a identi-           testes de software a partir de casos de uso (CADASTRAR FUNCIONÁRIO).Com isso,ficam
      ficação dos atores de um modelo de casos de uso até a construção de casos e             disponíveis 2 exemplos com características diferentes a fim de facilitar o aprendizado.
      procedimentos de testes. Nesta vídeo-aula são apresentados apenas os 3 primeiros        Ao final,são deixados pontos em aberto para que quem estiver acompanhando as aulas
      passos deste processo.                                                                  possa dar continuidade ao projeto dos testes, como um exercício.



ÍNDICE
Engenharia

06 - Testes de segurança
                                                                                                                                                                                  Eduardo Habib

14 - Gerência de Configuração
                                                                                                     Alberto Boller Filho, Rodrigo Oliveira Spinola, Marcelo Nascimento Costa e Marcos Kalinowski

31 - Medição de Software
                                                                                                                                                                      Monalessa Perini Barcellos

Agilidade
    38 - A Comunicação no Processo de Software
                                                                                                                                                                     Márcia Regina Simm Cantú

Planejamento e Gerência
43 - Análise Quantitativa de Riscos e suas Técnicas
                                                                                                                                               Marcio Souza, Cristine Gusmão e Hermano Perrelli

Desenvolvimento
49 - Automatizando Testes Funcionais em Aplicações Web
                                                                                                                                                                          Arilo Cláudio Dias Neto

57 - Testes funcionais automatizados com Hudson e Selenium RC
                                                                                                              Fabrício Nogueira de Almeida, Victor Vidigal Ribeiro e Marco Antônio Pereira Araújo



4    Engenharia de Software Magazine
Edição 05 - Engenharia de Software Magazine   5
Engenharia
    Nesta seção você encontra artigos voltados para testes, processo,
    modelos, documentação, entre outros




    Testes de segurança
    Testes de segurança em aplicações web


                                                                    De que se trata o artigo?                           Para que serve?
                                                                    Neste artigo veremos a importância de se reali-     A realização de testes de segurança em aplicações
                                                                    zar testes de segurança em aplicações Web. Ao       Web diminui a probabilidade de um software ser dis-
                                                                    desenvolver uma aplicação web, deve-se pensar       ponibilizado para o usuário final com falhas críticas de
                                                                    na segurança dos dados durante toda a fase de       segurança e que podem causar prejuízos ao usuário,
                                                                    desenvolvimento. Isso minimiza as falhas de se-     seja ele financeiro ou a liberação de dados sigilosos.
                                                                    gurança que chegam ao usuário final. Esse artigo
                                                                    tratará dos testes de segurança realizados pelo     Em que situação o tema é útil?
                                                                    testador após o software já estar desenvolvido.     Testar a segurança de aplicações Web é importante
                                                                    Será demonstrada a importância de se realizar       em qualquer aplicação que contenha dados sigilosos
                                                                    testes em aplicações web, as falhas de segu-        e/ou onde ocorra, de alguma forma, transações finan-
                                                                    rança mais comuns na Internet e, por fim, serão     ceiras entre o cliente e o servidor, pois diminuem a
                                                                    demonstradas extensões do Firefox e algumas         probabilidade do software ser colocado em produção
                                                                    ferramentas que auxiliam nos testes de aplica-      com uma falha crítica de segurança e que pode vir a
               Eduardo Habib                                        ções web.                                           ser explorada por alguma pessoa mal intencionada.
               eduardohabib@gmail.com
               Possui Graduação e mestrado em Ciência da
               Computação na UFMG. Atua na área de testes
               de software há nove anos. Nesses anos teve
               experiência no planejamento, especificação
               e execução de testes manuais, automação
               de testes, testes de desempenho e testes de



                                                                 A
               segurança. Possui três anos de experiência le-
               cionando no ensino superior. Freqüentemente
                                                                          segurança dos softwares de­                  focados nos pontos onde a segurança
               ministra treinamentos e/ou palestras relacio-              senvolvidos atualmente está                  tem uma probabilidade maior de ser
               nados a testes de software já tendo, inclusive,            se tornando um ponto cada vez                comprometida.
               ministrado a disciplina de Testes de Software     mais importante a ser testado. Entretan­                Nesse artigo será demonstrada a im­
               na PUC Minas. Possui as certificações CQA -       to, testar a segurança de um software                 portância de se realizar testes de segu­
               Certified Quality Assurance da IBM e CTFL do
               BSTQB. Atualmente é Gerente de testes no
                                                                 é algo muito complexo e custoso. Por­                 rança em aplicações web. Serão apresen­
               SYNERGIA - DCC/UFMG.                              tanto, os testes de segurança devem ser               tadas quais as falhas de segurança são


6   Engenharia de Software Magazine - Testes de segurança
Validação, Verificação & Teste



mais comuns em aplicações web e algumas ferramentas livres      Gartner, em que se estima que os ataques contra os sistemas
que auxiliam nesses testes.                                     do departamento de defesa dos EUA foram 60% maiores em
                                                                2009, se comparados com o ano anterior.
Testes de segurança                                               Além do aumento do número de invasões que podem ser
  No início da internet existiam apenas sites estáticos. Os     visualizados na Figura 1, um estudo publicado pela Univer­
sites existentes desempenhavam papel apenas de repositó­        sidade de Michigan, revelou que mais de 75% dos sites de
rios de informações que continham documentos estáticos,         bancos, que são os que mais investem em segurança, não são
e os navegadores web foram criados como uma forma de            inteiramente seguros como dizem ser e estão sujeitos a falhas
visualização desses documentos. A maioria dos sites não         de segurança. Outro estudo, do instituto de pesquisa WhiteHat
autenticava usuários porque não havia necessidade já que        Security, publicou dados demonstrando que cerca de 64% dos
a mesma informação era exibida para todos os usuários. Se       1364 sites de companhias avaliados possuíam pelo menos uma
um invasor comprometesse um servidor, ele normalmente           falha de segurança crítica.
não ganhava acesso a nenhuma informação confidencial,
visto que toda a informação já estava liberada para o
público. No máximo, o invasor poderia escrever algum
conteúdo no site ou utilizar o servidor como repositório
de arquivos.
  Hoje em dia a internet é completamente diferente. A
maioria dos web sites são aplicações complexas e possuem
um fluxo de informações nos dois sentidos (servidor e
navegador). Elas suportam login, transações financeiras e
acesso a dados pessoais. O conteúdo exibido para os usu­
ários geralmente é gerado dinamicamente e muitas vezes
é específico para cada usuário. Muitos dos dados proces­
sados, e exibidos, são pessoais. A segurança é, portanto,
uma grande questão: ninguém utilizará uma aplicação web
caso acredite que suas informações confidenciais serão
exibidas para terceiros.
  Atualmente, para as aplicações web proverem as funcio­        Figura 1. Total de incidentes reportados ao CERT.br
nalidades mais básicas, muitas vezes é necessário acessar
sistemas internos da empresa e esses sistemas, muitas             Isso é muito crítico para as empresas já que o aumento do
vezes, contêm dados sigilosos. Uma falha em uma dessas          faturamento das empresas que comercializam produtos na
aplicações web pode comprometer todo o servidor. Um             web está diretamente ligado à sua reputação. Poucas pessoas
invasor que conseguir comprometer a aplicação web pode          gostariam de fazer negócio com um site inseguro e, devido a
roubar informações pessoais e com isso realizar ações           isso, as organizações não costumam publicar detalhes sobre
maliciosas contra os outros usuários.                           a segurança de seus dados, ataques sofridos e vulnerabili­
  Tanto as empresas desenvolvedoras de software quanto          dades, com o objetivo de não adquirir uma má reputação.
os usuários finais têm grande interesse na segurança das        Por isso, os números podem ser ainda mais alarmantes do
aplicações: as empresas, devido à necessidade de aumentar       que os publicados pelo CERT.br.
o faturamento com comércio na internet, os usuários por­          Dentre os diversos fatores que influenciam o aumento
que eles terão mais segurança para utilizar aplicativos.        do número de incidentes de segurança, como a maior
                                                                popularização da internet pelo mundo e o surgimento de
Por que fazer testes de segurança?                              ferramentas que auxiliam nesses ataques, deve-se destacar
 Apesar de recentemente ter havido uma aumento da pre­          outro fator que contribui para o aumento dos ataques: a
ocupação com segurança, notícias de invasões continuam          evolução constante da tecnologia utilizada nas aplicações
no noticiário e o número de incidentes de segurança tem         web. Como a tecnologia utilizada no desenvolvimento de
aumentado ano a ano.                                            aplicações web evolui muito rapidamente, as aplicações web
 Segundo dados divulgados pelo Centro de Estudos, Res­          trazem consigo, a todo o momento, uma nova variedade de
posta e Tratamento de Incidentes de Segurança no Brasil         falhas de segurança. Novos ataques, que antes do desen­
(CERT.br), e que podem ser visualizados na Figura 1, em         volvimento da aplicação não eram conhecidos, são criados
2009 foram registradas 358.343 notificações de incidentes       após o desenvolvimento e podem ser exploradas até serem
de segurança. Isso representa um aumento de 61% em              corrigidos.
relação a 2008 e de 11530% em relação ao número de inci­          Alguns problemas, como a injeção SQL têm diminuído a
dentes registrados em 1999, primeiro ano da medição. Esses      frequência de ocorrência conforme os desenvolvedores se
números são coerentes com outro estudo publicado pela           conscientizam deles. Entretanto, a introdução cada vez mais


                                                                                   Edição 24 - Engenharia de Software Magazine   7
frequente de novas tecnologias possibilita novas possibilidades     O principal problema das aplicações web é que, como a aplicação
de exploração.                                                    não tem como garantir quais entradas os clientes irão submeter,
  Existem diversas e excelentes ferramentas proprietárias         pode-se submeter entradas arbitrárias, mesmo que a aplicação
que auxiliam no teste de segurança de aplicações web. Con­        faça tratamento no cliente para evitar isso. Portanto, qualquer
tudo, a maioria dessas ferramentas comerciais possui um           aplicação web deve considerar que todos os usuários são poten­
custo bastante elevado. Esse artigo se concentrará, então, na     ciais invasores e devem tomar medidas para evitar que pessoas
apresentação de extensões para navegadores e ferramentas          mal intencionadas utilizem essas entradas para comprometer a
Open Source que ajudam os testadores e especialistas em           aplicação. Esse problema se manifesta de várias formas:
segurança nos testes de segurança de aplicações web.              • Usuários podem interferir em qualquer conjunto de dados
                                                                  transmitidos entre o cliente e o servidor, incluindo requisições,
Principais falhas e a utilização de SSL                           cookies e cabeçalhos HTTP. Qualquer controle implementado
  Conforme pôde ser visto na seção anterior, o número de          do lado do cliente, como validações de entradas podem ser fa­
incidentes de segurança vem aumentando a cada ano e a             cilmente burladas;
maioria dos sites possui problemas de segurança. Em con­          • As requisições podem ser enviadas pelos usuários em qualquer
traste com esses dados, ao consultar a página de FAQ de           sequência. Qualquer suposição relativa à ordem como as requisi­
uma aplicação típica da web, o usuário será “tranquilizado”       ções serão feitas pelos usuários pode ser burlada;
que ela é segura pelo fato do site utilizar a tecnologia SSL.     • Não se deve supor que os usuários utilizarão o navegador para
Os usuários são frequentemente convidados a verificar             interagir com a aplicação. Existem várias ferramentas que permi­
o certificado do site, comprovar os avançados protocolos          tem a interação com um servidor, sem a utilização do navegador.
criptográficos em uso, e, com isso, é levado a confiar que        Essas ferramentas permitem que se façam requisições que não
suas informações pessoais estão em boas mãos. Indepen­            seriam possíveis caso fosse utilizado um navegador comum.
dentemente de estar ou não utilizando SSL, a maioria das
aplicações web ainda contém falhas de segurança, falhas
essas que não têm nada a ver com a utilização ou não de
SSL. A utilização da tecnologia SSL é importante porque
ela protege a integridade do dado durante a transição entre
o navegador do usuário e o servidor web. Entretanto, SSL
não irá impedir os ataques que comprometem diretamente
os servidores ou os clientes de uma aplicação como ocorre
na maioria dos ataques.
  Segue abaixo algumas falhas que não são resolvidas com a
utilização de SSL e na Figura 2, sua frequência de ocorrência
segundo STUTTARD:
• Falha de autenticação: Essa falha ocorre quando as creden­
ciais de acesso ao site não são protegidas adequadamente;         Figura 2. Frequência de incidencia das principais falhas na Web
• Falha no controle de acesso: Essa falha envolve casos onde
a aplicação não consegue proteger o acesso aos seus dados           Existem ferramentas que testam automaticamente um conjunto
e funcionalidades, permitindo que o invasor veja dados            grande de entradas visando encontrar falhas. Alguns exemplos
privados de outro usuário e acione comandos aos quais ele         de entradas enviadas são:
não tem acesso;                                                   • Modificação de um valor transmitido em um campo escondido
• Injeção SQL: Essa falha ocorre quando a aplicação permite       do HTML (hidden);
que o invasor injete comandos no banco de dados utilizando,       • Modificação de um token da sessão, para roubar a sessão de
para isso, a aplicação;                                           outro usuário autenticado;
• Cross-Site Scripting: Cross-Site Scripting (XSS) é uma          • Remoção de certos parâmetros que são normalmente submeti­
falha em que se permite ao atacante inserir código (ex: Java      dos, para explorar falhas de lógica na aplicação;
Script ou tags HTML) em páginas Web, visando conseguir            • Alterar alguma entrada para tentar fazer um acesso ao banco
informações de outros usuários ou acessos restritos;              de dados.
• Vazamento de informações: Essa falha ocorre quando
as aplicações divulgam, sem intenção, informações sobre            Nas próximas seções serão apresentadas ferramentas livres e
suas configurações, processos internos ou privacidade             que podem ser utilizadas para realizar os testes de segurança
devido a problemas na aplicação. Isso é muito crítico, pois       em aplicações web.
a divulgação de informações sobre a versão do servidor
de aplicação ou do banco de dados utilizado, por exemplo,         Montando seu ambiente de testes com ferramentas livres
pode indicar ao invasor quais as falhas às quais a aplicação       Alguns ataques a aplicações web podem ser executadas usan­
está vulnerável.                                                  do apenas um navegador web padrão. Entretanto, para que o


8   Engenharia de Software Magazine - Testes de segurança
Validação, Verificação & Teste



teste de segurança seja mais efetivo, exige-se a     é convidado a encontrá-la e, caso o testador não a encontre, o WebGoat
utilização de ferramentas adicionais para que seja   permite a solicitação de dicas para a identificação da falha. Caso não se
possível encontrar mais falhas de segurança. Mui­    consiga identificar a falha, após dicas de como encontrá-la, é possível
tas dessas ferramentas funcionam em conjunto         ainda consultar uma descrição da solução. Se mesmo assim o testador não
com o navegador, quer como extensões que modi­       entender como encontrar a falha, pode-se consultar vídeos demonstrando
ficam a sua funcionalidade, ou como ferramentas      passo a passo como identificá-la. O WebGoat é uma aplicação de extrema
externas que funcionam ao lado do navegador e        necessidade, principalmente para iniciantes nos testes de segurança e que
modificam sua interação com o aplicativo alvo.       querem aprender a realizar alguns testes. Os exemplos de utilização das
Para testar uma aplicação procurando por falhas      ferramentas e extensões para navegadores apresentadas nesse artigo foram
de segurança é necessário ter domínio sobre essas    feitos utilizando-se o WebGoat como aplicação alvo.
ferramentas. Nas próximas sessões, serão citadas
algumas extensões para o Firefox e ferramentas       Navegadores
livres utilizadas para auxiliar o testador durante    Um navegador web não é exatamente uma ferramenta hacker. Porém, a
os testes de segurança.                              escolha pelo navegador utilizado pode auxiliá-lo no teste a uma aplicação
                                                     web. O Firefox é, hoje, o segundo navegador mais utilizado do mundo
Ferramentas necessárias para a realização            compreendendo, segundo alguns estudos, cerca de 25% do mercado e
dos testes                                           possui diversas extensões que auxiliam o testador no teste de segurança
  A primeira ferramenta que o testador deve          de uma aplicação web. Abaixo iremos descrever algumas das extensões
possuir para realizar os testes, além do próprio     que podem auxiliar nessa tarefa.
navegador, é um Proxy interceptador. Um Proxy        • FoxyProxy: Permite o gerenciamento das configurações de proxy do
interceptador permite visualizar e modificar         navegador, possibilitando a troca rápida entre os proxies utilizados,
todas as mensagens HTTP que passam entre o           realização de configurações de Proxies diferentes para URLs diferentes.
navegador e a aplicação.                             Como os Proxies são ferramentas essenciais em testes de aplicações web,
  Atualmente, além dos Proxies básicos existem
suítes que se tornaram muito poderosas por
possuírem, além dos Proxies, um conjunto de
outras funções projetadas para ajudá-lo no ataque
a aplicações web.
  A segunda categoria principal de ferramenta é
conhecida como Web Spider. Essas ferramentas
agem solicitando páginas web, analisando os links
para outras páginas, e em seguida, solicitando
essas páginas. Eles continuam recursivamente até
que todo o conteúdo de um site seja descoberto.
  A terceira categoria principal de ferramenta é o
Scanner de aplicação web. Essas ferramentas são
concebidas para automatizar muitas das tarefas
envolvidas no ataque a uma aplicação web reali­
zando desde o mapeamento inicial até a sondagem
por vulnerabilidades. Essas ferramentas fazem
uma busca automática por toda a aplicação subme­
tendo dados e analisando as respostas para, com
isso, tentar encontrar automaticamente falhas de
segurança conhecidas.
  A quarta categoria principal de ferramenta ne­
cessária, principalmente quando o testador quer
realizar alguns testes em seu ambiente, é uma
aplicação cheia de falhas onde ele possa fazer
alguns experimentos. Essa aplicação existe. O
WebGoat é uma aplicação Web Open Source do
projeto OWASP. Nessa aplicação as falhas foram
inseridas propositalmente e seu principal objetivo
é ser um laboratório onde o testador aprende, na
prática, as principais vulnerabilidades encontra­
das em aplicações Web. Para cada falha, o usuário


                                                                                 Edição 24 - Engenharia de Software Magazine   9
visto que eles permitem interceptar todas as requisições e       Como essas ferramentas funcionam
respostas e modificá-las, e, além disso, muitas vezes utiliza-     Cada suíte de testes integrados contém várias ferramentas
se mais de um Proxy durante o teste, essa extensão é impor­      complementares que compartilham informações sobre a
tante para agilizar esse processo de seleção e modificação       aplicação alvo. Normalmente, o testador interage com a
do Proxy utilizado;                                              aplicação de uma forma normal através do seu navegador,
• Tamper Data: extensão do Firefox que permite interceptar       e as ferramentas de acompanhamento monitoram os re­
e modificar as requisições HTTP enviadas e recebidas pelo        sultados dos pedidos e das respostas, armazenando todas
navegador;                                                       as informações pertinentes sobre a aplicação de destino e
• LiveHTTPHeaders: É uma extensão do Firefox que permite         provendo inúmeras funções úteis. Cada suíte dispõe dos
visualizar os cabeçalhos HTTP enviados ao servidor web           seguintes componentes principais:
ou os que são recebidos do servidor;                             • Um Proxy Interceptador;
• Edit Cookies: permite adicionar e modificar valores e          • Uma aplicação spider;
atributos dos cookies;                                           • Várias funções partilhadas e utilitárias.
• CookieWatcher: permite que o valor do cookie seja moni­
torado na barra de status.                                       Proxy Interceptador
                                                                   O Proxy Interceptador fica no centro da suíte de ferramen­
  Muitas vezes é possível modificar o seu navegador para         tas e é o único componente realmente essencial na suíte.
ajudá-lo no ataque de uma aplicação:                             Para utilizá-lo, deve-se configurar o navegador para usar o
• Se a aplicação não utilizar cookies para armazenar tokens      Proxy escolhido como servidor Proxy em uma porta local
de sessão, pode-se utilizar vários processos do mesmo na­        na própria máquina. O Proxy é, então, configurado para
vegador, cada um com uma sessão diferente sobre o pedido.        escutar essa porta e receber todos os pedidos emitidos pelo
Por exemplo, quando estiver testando o controle de acesso,       navegador e repassá-lo ao destino. Como ele tem acesso aos
pode-se utilizar uma instância do navegador logada com um        dois sentidos da mensagem entre o navegador e o servidor
usuário com mais privilégio e outra logada com uma sessão        web e age como um interceptador, ele consegue barrar cada
com um usuário com poucos previlégios e assim, testar rapi­      mensagem para revisão e modificação pelo usuário, para
damentte a aplicação com poucos pedidos de visitas;              só então encaminhá-la ao destino.
• É possível limpar os dados que um navegador guarda
sobre alguma aplicação (principalmente dentro de cookies         Outras características comuns presentes nessas
e cache) de forma a iniciar novamente com o pedido como          suítes
um novo usuário;                                                   Além de sua função principal de permitir a interceptação
• Pode-se acionar o botão direito do mouse em um link e          e alteração de requisições e respostas, os Proxies possuem
abri-lo em uma nova janela ou guia para explorar uma fun­        uma riqueza de outros recursos para ajudar nos testes de
cionalidade que chama a atenção do invasor por aparentar         segurança de aplicações web. Entre os recursos, incluem-
apresentar falhas de segurança, mantendo a sua posição           se os seguintes:
anterior para continuar trabalhando de forma sistemática         • É permitida a criação de regras de interceptação,
através da aplicação.                                            possibilitando que as mensagens sejam intercepta­
                                                                 das para revisão ou silenciosamente retransmitidas,
 Com essas extensões, os testes de segurança poderão ser         com base em critérios definidos pelo testador como
realizados com muito mais facilidade. Apesar disso, para         host de destino, url, método, tipo de recurso, código
realizar testes mais completos, é necessária a utilização        de resposta, ou o aparecimento de determinadas ex­
de mais ferramentas, que serão descritas nas próximas            pressões, conforme pode ser visualizado na Figura 3.
sessões.                                                         Em uma aplicação típica, muitas requisições e respostas são
                                                                 de pouco interesse para o testador, e esta função permite
Outras ferramentas úteis                                         configurar o Proxy para interceptar apenas as mensagens
  Após o navegador web, o item mais útil no seu conjunto         que lhe são interessantes;
de ferramentas ao atacar uma aplicação web é um Proxy            • Um histórico detalhado de todas as requisições e respos­
Interceptador. No começo da Web os Proxies Interceptador         tas, o que permite que mensagens antigas sejam revistas e
eram aplicações que proviam funcionalidades básicas. Nos         analisadas posteriormente;
últimos anos, os Proxies Interceptador expandiram-se para        • Regras para a modificação dinâmica do conteúdo das
um grande número de suítes, cada uma contendo muitas             requisições e respostas. Esta função pode ser útil em
ferramentas interconectadas desenvolvidas para auxiliar          inúmeras situações, por exemplo, para reescrever o valor
em todas as tarefas envolvidas no ataque a uma aplicação         de um cookie ou outro parâmetro em todos os pedidos
web. Todas as funcionalidades referentes a Proxies Inter­        visando remover diretivas de cache, para simular um
ceptador citadas no restante desse artigo estão presentes        navegador específico modificando o cabeçalho e assim
no WebScarab, uma ferramenta livre do projeto Owasp.             sucessivamente;


10   Engenharia de Software Magazine - Testes de segurança
Validação, Verificação & Teste



                                                                          Existem algumas ferramentas que varrem toda a aplicação
                                                                        procurando por falhas conhecidas e, após a varredura, emitem
                                                                        um relatório com os pontos suspeitos de possuírem falhas de
                                                                        segurança. Os recursos a seguir estão presentes na ferramenta
                                                                        Paros, que permite a execução de uma varredura na aplicação
                                                                        à procura de falhas de segurança:
                                                                        • Permite varreduras automatizadas para detectar vulnerabili­
                                                                        dades conhecidas. O Paros envia um conjunto de sequências de
                                                                        ataque e analisa as respostas para identificar vulnerabilidades
                                                                        conhecidas. A Figura 5 mostra o resultado de uma Varredura
                                                                        feita utilizando esta ferramenta. Verifique na figura que é
                                                                        possível identificar a URL onde se suspeita que exista a falha
                                                                        de segurança e os parâmetros utilizados pelo Paros.

Figura 3. Tela do WebScarab que permite a configuração das URLs que
serão interceptadas

• Acesso a funcionalidades de Proxy que permitem que se nave­
gue no histórico de requisições e respostas, possibilitando, com
isso, que o testador identifique requisições suspeitas de possuírem
problemas de segurança e reemita o pedido, quantas vezes for
preciso e, caso necessário, faça modificações que permitam iden­
tificar possíveis falhas, conforme pode ser visto na Figura 4;




                                                                        Figura 5. Resultado de um scan na aplicação WebGoat realizado pelo Paros

                                                                        • Permite o controle das sequências de ataque e formas de
                                                                        incorporá-las às requisições. Possui ainda um histórico de
                                                                        todas as requisições permitindo a revisão dos resultados para
                                                                        a identificação de todas as respostas incomuns ou anômalas
                                                                        que merecem maior investigação;
                                                                        • Funções para extração de dados úteis a partir das respostas
                                                                        do aplicativo - por exemplo, analisando os campos de usuário
                                                                        e senha em uma página de detalhes. Isso pode ser útil quando
Figura 4. O WebScarab permite a visualização do Histórico das           você está explorando vulnerabilidades diversas, incluindo
requisições realizadas
                                                                        falhas na sessão e controles de acesso;
• Funcionalidades para o mapeamento completo de toda a apli­            • Funções para analisar cookies e outros tokens para qualquer
cação, funcionalidades essas conhecidas como Web Spiders. Os            sequência.
Web Spiders agem solicitando páginas web, analisando os links
para outras páginas, e em seguida, solicitando essas páginas.             Uma ressalva é que, todas as possíveis falhas apontadas
Eles continuam recursivamente até que todo o conteúdo de                pelo Paros devem ser investigadas, pois após uma análise,
um site seja descoberto;                                                descobre-se que muitas delas não são falhas. Esse excesso
• Funções que permitem revelar campos e comandos                        de falsos positivos acaba fazendo com que o testador perca
escondidos.                                                             muito tempo analisando os possíveis defeitos. O autor deste
                                                                        artigo desconhece, até a presente data, uma ferramenta livre
Scanners de aplicação                                                   que faça a varredura de uma aplicação, procurando por
  Embora seja possível realizar um teste bem-sucedido                   falhas de segurança conhecidas, e que seja tão boa quanto
usando apenas técnicas manuais, para se tornar um bom                   alguns scanners proprietários disponíveis no mercado. Ape­
testador, é necessário fazer uso de automação, para aumentar            sar de falsos positivos ocorrerem também nas ferramentas
a rapidez e eficácia dos testes.                                        comerciais, ocorrem em uma escala bem menor do que no


                                                                                        Edição 24 - Engenharia de Software Magazine        11
Paros, ocasionando uma economia de tempo do testador na              Funcionalidades adicionais
análise de falhas.                                                     Além de suas ferramentas principais, as suítes de teste de
  Além disso, segundo SUTO, autor do artigo Analyzing the Accu-      segurança normalmente fornecem uma vasta gama de outras
racy and Time Costs of Web Application Security Scanners, mesmo as   funcionalidades que visam atender a necessidades específicas
ferramentas proprietárias chegam a não detectar, dependendo          que surgem quando se está testando a segurança de uma apli­
da ferramenta utilizada, 66% das falhas presentes em um site,        cação web, e que permitam a outras ferramentas trabalharem
o que faz com que não se possa confiar cegamente nessas ferra­       em situações inusitadas. Os recursos abaixo estão disponíveis
mentas e torna importante o papel do testador na identificação       no WebScarab:
desses defeitos não identificados pelos Web Scanners.                • Análise da estrutura de mensagens HTTP, incluindo análise e
                                                                     modificação de cabeçalhos e parâmetros do pedido, conforme
Requisições manuais                                                  pode ser visto na Figura 7;
  As suítes livres, como o WebScarab, permitem ainda facilida­
des para que o usuário emita uma única requisição e visualize
a sua resposta. Embora simples, esta função muitas vezes é
extremamente útil quando se está investigando uma possível
vulnerabilidade e, para isso, pode existir a necessidade de ree­
ditar a mesma requisição manualmente várias vezes, aprimo­
rando elementos da requisição para determinar o efeito sobre
o comportamento da aplicação.
  Logicamente, com uma ferramenta com as funções integradas
você pode recuperar rapidamente uma requisição interessante
de outro componente utilizado no teste (Proxy, spider, etc.) para
investigação manual. Veja a Figura 6 para um exemplo de uma
tela do WebScarab onde é possível realizar a modificação de
uma requisição.




                                                                     Figura 7. O WebScarab permite a interceptação e modificação de
                                                                     pedidos e respostas

                                                                     • Renderização de conteúdo das respostas HTML, sendo pos­
                                                                     sível visualizar a página da mesma forma que ela será exibida
                                                                     no navegador web (Aba HTML da Figura 7);
                                                                     • Capacidade de exibir e editar mensagens de texto e de forma
                                                                     hexadecimal (Aba Hex da Figura 7);
                                                                     • Funções de pesquisa por todas as requisições e respostas;
                                                                     • Atualização automática do cabeçalho HTTP, para mantê-
                                                                     lo consistente com qualquer edição manual do conteúdo da
                                                                     mensagem;
                                                                     • Codificadores e decodificadores para vários sistemas, per­
                                                                     mitindo a rápida análise dos dados da aplicação em cookies
                                                                     e outros parâmetros;
                                                                     • O suporte para utilização de outros Proxies, que não são os
Figura 6. Reedição manual de uma requisição                          integrados na aplicação, permitindo-lhe encadear ferramentas
                                                                     diferentes ou acessar um aplicativo através do Proxy usado por
  O WebScarab possui as seguintes funcionalidades relacionadas       sua organização ou ISP;
ao envio de requisições manuais:                                     • Ferramenta de apoio a métodos de autenticação de HTTP,
• Integração com outros componentes do conjunto, e a pos­            permitindo-lhe utilizar todos os recursos da suíte em ambien­
sibilidade de submeter qualquer requisição de e para outros          tes onde estes são utilizados, tais como LANs corporativas;
componentes para investigação posterior;                             • Suporte para os certificados de cliente SSL, permitindo-lhe
• Histórico de todos os pedidos e respostas, mantendo um re­         testar aplicações que utilizam essa tecnologia;
gistro completo de todas as requisições manuais para revisão         • Manipulação das características do HTTP, como a codificação
posterior, e possibilitando que uma requisição modificada seja       gzip, codificação de transferência em partes, e status 100 de
recuperada para análise posterior.                                   respostas provisórias;


12   Engenharia de Software Magazine - Testes de segurança
Validação, Verificação & Teste



• Extensibilidade, permitindo que a funcionalidade incorpo­                                      as ferramentas livres ainda estão muito distantes de serem
rada seja alterada e estendida de forma arbitrária por código                                    tão boas quanto as ferramentas comerciais disponíveis no
de terceiros;                                                                                    mercado, já que, como eles encontram muitos falsos positi­
• Salvamento das configurações utilizadas na ferramenta,                                         vos, acabam desperdiçando o tempo do testador na análise
permitindo que uma configuração específica seja reutilizada                                      de falhas que não existem.
na próxima execução da suíte;                                                                      Por fim, pôde-se perceber que o bom entendimento de
• O WebScarab é independente de plataforma, permitindo que                                       como utilizar as ferramentas utilizadas é de extrema im­
seja executado em todos os sistemas operacionais populares.                                      portância para a melhoria da segurança dos Web Sites, visto
                                                                                                 que mesmo os melhores Web Scanners proprietários podem
Conclusão                                                                                        não encontrar a maioria dos defeitos de segurança presente
  Cada uma das ferramentas apresentadas neste artigo possui                                      em uma aplicação Web.
funcionalidades importantes e que, juntas, permitem ao testa­
dor a realização de testes de segurança de forma satisfatória.
Todas são eficazes e muito populares entre a comunidade que
utiliza softwares livres para testar a segurança de aplicativos                                                                                                                 Feedback
                                                                                                   Dê seu feedback sobre esta edição!                                        eu
na web. Com isso, a escolha de qual suíte será utilizada é uma




                                                                                                                                                                         s
                                                                                                                                                                      Dê
questão de preferência pessoal. Recomenda-se que seja feito                                       A Engenharia de Software Magazine tem que ser feita ao seu gosto.




                                                                                                                                                                                            sobre e
o download das ferramentas descritas para que o próprio                                           Para isso, precisamos saber o que você, leitor, acha da revista!




                                                                                                                                                                                                   s
                                                                                                                                                                                ta
                                                                                                                                                                                   edição
testador escolha qual ferramenta utilizar em seus testes.                                         Dê seu voto sobre este artigo, através do link:
  Entretanto, apesar das ferramentas livres terem evoluído                                         www.devmedia.com.br/esmag/feedback
bastante, pode-se perceber que em relação aos Web Scanners,



  Referências e links

 STUTTARD, Dafydd, PINTO, Marcus. The Web Application Hacker’s Handbook: Discovering and        Projeto Owasp
 Exploiting Security Flaws. Wiley Publishing, 2007.                                             http://www.owasp.org

 MCGRAW, Gary, Software Security: Building Security In. Addison Wesley Professional, 2006.      WebScarab
                                                                                                http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project
 Testing Experience: The Magazine for Professional Testers, Security Testing, Junho de 2009.
                                                                                                WebGoat
 SUTO, Larry. Analyzing the Accuracy and Time Costs of Web Application Security Scanners. São   http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
 Francisco, Fevereiro de 2010.
                                                                                                Paros - for web application security assessment
 Widespread security flaws revealed in online banks                                             http://www.parosproxy.org/index.shtml
 http://www.ur.umich.edu/0708/Jul28_08/02.php

 WhiteHat: Web Security Vulnerabilities Found on Most Sites
 http://www.eweek.com/c/a/Security/WhiteHat-Web-Security-Vulnerabilites-Found-on-Most-
 Sites707138




                                                                                                                       Edição 24 - Engenharia de Software Magazine               13
Engenharia
     Nesta seção você encontra artigos voltados para testes, processo,
     modelos, documentação, entre outros




 Gerência de Configuração
 Definições Iniciais, Ferramentas e Processo

                                                                                                                               De que se trata o artigo?
                                                                                                                               Neste artigo serão mostrados inicialmente aspectos
                                                                                                                               relevantes da gerência de configuração. Na segun-
           Alberto Boller Filho                                           Marcelo Nascimento Costa                             da parte do artigo, será apresentada a aplicação da
           alberto.boller@gmail.com                                       mnc@kalisoftware.com
           Formado em Tecnólogo Análise de Sistemas pelo
                                                                                                                               gerência de configuração dentro dos principais mo-
                                                                          Mestre em Engenharia de Sistemas e Computação
           Centro Universitário Instituto Metodista Bennet.               pela COPPE/UFRJ (avaliada como a melhor pós-         delos de maturidade e as vantagens de se utilizar
           Possui mais de 30 anos de experiência em infor-                graduação em computação do país). Bacharel em        tais ferramentas, através de um estudo de caso de
           mática. Possui especialização em administração                 Ciência da Computação pela UFPA. Professor dos       implementação em uma empresa hipotética.
           de redes Linux Conectiva, segurança de redes                   cursos de graduação em computação e adminis-
           Linux Conectiva, administração de redes Windo-                 tração do Instituto Metodista Bennett. Autor de
           ws NT e Windows Server 2003, programação de                    diversos artigos científicos sobre Engenharia de     Para que serve?
           aplicações cliente servidor avançada em Delphi,                Software publicados em revistas e conferências       Este trabalho tem como intuito servir como um mate-
           programação RPGII, programação COBOL, System                   renomadas, dentro e fora do país.                    rial de apoio para aqueles que desejam implementar
           Administrator NOTES, Application Development                                                                        gerência de configuração em uma organização de-
           NOTES. Atualmente é Gerente de informática na                  Marcos Kalinowski
           clínica de diagnóstico por imagens “CEPEM “ Cen-
                                                                                                                               senvolvedora de software, usando como ferramen-
                                                                          mk@kalisoftware.com
           tro de Estudos e Pesquisa da Mulher”.                          Doutorando e Mestre em Engenharia de Software        tas de controle de mudanças e controle de versões, o
                                                                          pela COPPE/UFRJ (avaliada como a melhor pós-         Mantis e o Subversion respectivamente.
           Rodrigo Oliveira Spínola                                       graduação em computação do país), com ênfase
           rodrigo@sqlmagazine.com.br                                     em Validação, Verificação e Testes de Software e     Em que situação o tema é útil?
           Doutorando e Mestre em Engenharia de Software                  Melhoria de Processos. Bacharel em Ciência da        Para qualquer empresa de desenvolvimento de
           pela COPPE/UFRJ (avaliada como a melhor pós-                   Computação pela UFRJ. Professor do curso de pós-
                                                                                                                               software que tenham interesse em aumentar o
           graduação em computação do país). Criador do                   graduação e-IS Expert da UFRJ e Coordenador do
           projeto e editor chefe da revista Engenharia de                curso de Engenharia da Computação da UVA RJ.         controle e confiabilidade nos artefatos gerados
           Software Magazine. Autor de diversos artigos                                                                        pela equipe de desenvolvimento ao longo de


                                                               C
           científicos sobre Engenharia de Software publica-          om um mercado cada vez mais                              um processo de desenvolvimento de software.
           dos em revistas e conferências renomadas, dentro           exigente, as empresas que fabri­
           e fora do país. Experiência de participação em
                                                                      cam software tem revisto seus
           diversos projetos de consultoria para diferentes
           empresas tendo atuado com gerência de projetos,     processos de construção com o intuito de                      software voltadas para o controle tem
           requisitos e testes de software. Implementador      aumentar a qualidade de seus produtos                         sido elaboradas uma vez que um pro­
           certificado do MPS.BR, tendo também experiência     e também sua produtividade. Diversas                          jeto de software, ao longo do seu ciclo
           atuando junto a empresas certificadas CMMI.         metodologias de desenvolvimento de                            de vida, tem uma grande quantidade


14   Engenharia de Software Magazine - Gerência de Configuração
Projeto



de itens de informação tais como documentos, código-fonte,        A primeira lei da engenharia de sistemas diz:
dados, manuais e outros, produzidos e até modificados, pelos      “Independente de onde você está no ciclo de vida de um sistema, o
mais diversos motivos.                                          sistema vai se modificar e o desejo de modificá-lo vai persistir ao longo de
  Para que a qualidade do software seja garantida, em fun­      todo o ciclo de vida”. Bersoff (1980 apud Pressman, 2006, p. 600)
ção destas modificações, é necessário que se faça uso da
Gerência de Configuração de Software (GCS). A Gerência            Produtos de software normalmente envolvem quantidades
de Configuração de Software tem como objetivo gerenciar         significativas de artefatos que são manuseados por diversas
e controlar a evolução de um software através do controle       pessoas envolvidas em seu projeto.
formal de versão e solicitação de mudanças. É uma forma           Assim sendo, a possibilidade de introdução de defeitos au­
sistemática e organizada de controlar as modificações de        menta à medida que alterações são efetuadas sem uma analise
um software tornando possível manter sua integridade ao         antes da sua execução, sem o registro formal antes da sua imple­
longo do tempo. A quantidade de itens que podem estar           mentação, sem a comunicação às pessoas que necessitam saber
sob controle da GCS e os níveis de controle exigidos sobre      delas ou ainda sem um controle que vise melhorar a qualidade
estes itens irá variar de empresa para empresa ou mesmo         e reduzir os erros.
de projeto para projeto. Sendo assim, o uso desta prática em      Existem quatro fontes fundamentais de modificações de
conformidade com modelos de maturidade mantidos por en­         software:
tidades que possuam credibilidade nacional e internacional,     • Novas condições de negócio e/ou mercado, modificam regras
e também o uso de ferramentas adequadas que garantam            de negócio;
a qualidade deste processo, é fundamental para que uma          • Novas necessidades do cliente exigem modificações de
empresa obtenha êxito e reconhecimento.                         funcionalidades;
  Para empresas de grande porte, isto não chega a ser um        • Reorganização e/ou crescimento/diminuição do negócio;
grande problema pois normalmente se dispõem de capital          • Restrições de orçamento ou cronograma, causando redefinição
e pessoal qualificado para manter tais práticas. Entretanto,    do sistema;
quando voltamos a olhar para as pequenas empresas, o
cenário é exatamente o oposto. As dificuldades e o custo        Conceitos e Terminologias
envolvidos para se adotar um modelo de gestão, treinar pes­       A Gerência de Configuração de Software (GCS) ou Software
soal, adquirir ferramentas que apóiem a pratica de GCS, e       Configuration Management (SCM) é uma atividade abrangente
ainda obter certificação em um determinado nível de modelo      que ocorre ao longo de todo o ciclo de vida de um software e
de maturidade, de uma entidade reconhecida, pode levar          que gerencia e controla sua evolução, através do controle de
uma pequena empresa a desistir rapidamente da adoção de         versões e solicitações de mudanças, permitindo que os diver­
um processo de GCS com qualidade, e como conseqüência,          sos envolvidos na sua criação e manutenção tenham acesso ao
perder em competitividade para outras empresas. Este artigo     histórico destas modificações, fornecendo-lhes subsídios para
foi feito com o foco voltado para estas empresas.               o entendimento do sistema na sua forma atual, e também nas
  Neste contexto, o objetivo deste artigo é mostrar uma solu­   suas formas anteriores.
ção especifica, de boa qualidade e baixo custo, que atenda        As atividades de GCS incluem:
as exigências dos modelos de maturidade e que possa ser         • Identificar modificações;
utilizada para implementar a Gerência de Configuração de        • Controlar modificações;
Software em pequenas empresas.                                  • Garantir a implementação adequada das modificações;
  Sob esta perspectiva, será apresentada uma revisão bi­        • Relatar as modificações a outros que possam ter interesse.
bliográfica sobre GCS, sua aplicação dentro dos modelos
de maturidade CMMI e MPS e uma solução especifica uti­             Segundo Pressman (2006, p. 599), diferentemente da ativida­
lizando as ferramentas Mantis e Subversion, através de um       de de suporte de software, que ocorre depois que o software
estudo de caso de uma empresa fictícia de pequeno porte         foi entregue ao cliente, a GCS é um conjunto de atividades de
que atenda as exigências do modelo de maturidade MPS, e         acompanhamento e controle que começam quando o projeto
que possa servir como alternativa para empresas reais que       de engenharia de software tem início e só terminam quando o
estejam buscando a implementação do processo de GCS.            software é retirado de operação.
Serão apresentados também os aspectos de instalação e             A Gerência de Configuração de Software tem especial impor­
configuração das ferramentas, a fim de facilitar àqueles        tância na garantia da qualidade do software e no apoio a gestão
que forem utilizá-las.                                          de projetos, sendo imprescindível sua aplicação nas empresas que
                                                                desejam obter a certificação do Capability Maturity Model Integra­
Gerência de Configuração                                        tion (CMMI) nível 2 ou na obtenção da certificação do modelo para
  Ao longo do ciclo de vida de um software, diversas modifi­    Melhoria de Processo do Software Brasileiro (MPS-BR) nível F.
cações podem ocorrer em seu projeto original. Os motivos          Segundo Pressman (2006 p. 606), o processo de gestão de
e origens destas modificações podem ser os mais variados        configuração de software define uma série de tarefas que têm
possíveis e podem ocorrer em qualquer época.                    quatro objetivos principais:


                                                                                 Edição 24 - Engenharia de Software Magazine           15
• Identificar todos os itens de configuração;                     efetivo. Fornece as funções óbvias de um sistema de gestão
• Gerir modificações em um ou mais destes itens;                  de banco de dados, mas, além disso executa ou propicia as
• Facilitar a construção de diferentes versões de um mesmo        seguintes funções:
produto;                                                          • Integridade de dados – Valida entradas no repositório,
• Garantir que a qualidade do software seja mantida a medida      garante consistência entre os ICS’s relacionados, executa mo­
que a configuração evolui ao longo do tempo.                      dificações em cascata quando uma modificação em um objeto
                                                                  exige modificações em objetos a ele relacionados;
 Para podermos entender como estas tarefas são executadas,        • Compartilhamento de informações – Fornece mecanismo
devemos conhecer alguns conceitos que são fundamentais            para compartilhar a informação entre vários desenvolvedores e
para a aplicação de GCS.                                          ferramentas, controla o acesso aos ICS’s por diferentes usuários
                                                                  através de política de bloqueio e desbloqueio de modo que as
Configuração de Software                                          modificações não sejam sobrepostas umas as outras;
  Diversos elementos são gerados como produto de um pro­          • Integração de ferramenta – Provê uma estrutura de dados
cesso de software. Estes elementos podem ser:                     que permite acesso à várias ferramentas de engenharia de
• Programas de computador (tanto na forma de código fonte         software;
como executável);                                                 • Integração de dados – Fornece funções de banco de dados
• Documentos que podem descrever programas, procedi­              que permitem que várias tarefas de GCS sejam executadas em
mentos regras de negócio etc. (Documentação técnica e de          um ou mais ICS’s;
usuário final);                                                   • Imposição de metodologia – Define um modelo entidade
• Estrutura de dados que podem estar contidos em programas        relacionamento que implica um modelo de processo especifico
ou externos a ele;                                                de engenharia de software. O relacionamento entre objetos
                                                                  definem um conjunto de passos a ser seguido para construir
  A este conjunto de elementos, que compreende toda a in­         o conteúdo do repositório;
formação produzida no processo de software, chamamos de           • Padronização de documentação – Normalização para a
“Configuração de Software”.                                       criação de documentos de engenharia de software.

Itens de Configuração de Software – ICS
  Segundo Molinari (2007 p. 44), um item de configuração é o
menor item de controle num processo de GCS.
  Um item de configuração de Software (ICS) ou Software Con­
figuration Item (SCI) é cada elemento criado durante o processo
de engenharia de software, ou que para este processo seja
necessário. Pode ser um arquivo, uma aplicação corporativa,
uma parte de um documento, uma seqüência de casos de teste,
um hardware ou um componente de programa. Além dos                      Figura 1. Classes e instâncias de um item de configuração
ICS´s gerados no processo de engenharia de software, também
poderão ser considerados como ICS’s ferramentas de software         Um repositório tem que ser capaz de manter ICS’s relaciona­
como editores, compiladores, navegadores e outras ferramentas     dos a diversas versões do software e ainda fornecer mecanis­
que forem necessárias à correta geração do software.              mos para montar esses ICS’s em uma configuração especifica
   Os ICS’s são identificados de maneira única e podem estar      da versão, garantindo assim a gestão efetiva das entregas do
relacionados a outros ICS’s e sua evolução é passível de ras­     produto e permitindo aos desenvolvedores voltar a versões
treamento. O controle da Gerência de Configuração será feito      anteriores. Precisa ser capaz de controlar variados tipos de
sobre estes itens e serão mantidas todas as informações a seu     ICS’s incluindo textos, gráficos, mapas de bits e outros mais
respeito. Diversas versões de um mesmo ICS podem existir          complexos.
como produto das modificações efetuadas no dia-a-dia.               Além disso, o repositório deve ser capaz de guardar informa­
  Molinari (2007 p. 44) faz uma analogia interessante ao con­     ções sobre baselines e pistas de auditoria com informações sobre
ceito de classes em orientação a objetos (OO) quando diz que      quando, por que, e por quem as modificações foram feitas.
o item está para uma “classe” em OO assim como as versões           Estas informações são chamadas de metadados, e são definidas
deste item estão para as “instâncias” da classe em questão        em um metamodelo que determina como as informações são
conforme mostrado na Figura 1.                                    armazenadas no repositório, como ter acesso a elas, como podem
                                                                  ser vistas pelos engenheiros de software, e como manter a sua
Repositório                                                       integridade e segurança.
  Segundo Forte (1989 apud Pressman, 2006, p. 604), o repo­         Além de manter as informações sobre os ICS’s, o repositório
sitório é o conjunto de mecanismos e estruturas que per­          deve ser capaz de armazená-los fisicamente em um esquema
mite a uma equipe de software gerir modificação de modo           de bibliotecas.


16   Engenharia de Software Magazine - Gerência de Configuração
Projeto



  Os ICS’s são retirados e inseridos nos repositórios, através    • Durante cada fase, a modificação de uma configuração-base
das seguintes operações:                                          somente pode ser feita de forma controlada, mediante um
• LOCK: Garante que apenas um usuário detém o acesso para         processo bem definido;
alterar um determinado ICS. Apesar de resolver o problema         • Ao ser estabelecida, cada baseline incorpora integralmente
de atualização simultânea, o lock serializa o trabalho dos        a anterior.
desenvolvedores.                                                  • O estabelecimento de cada baseline somente é realizado
• CHECK-OUT: Recupera a última versão de um item de               após ser aprovada por procedimentos de consistência interna,
configuração guardado no repositório, copiando-o para a área      verificação e validação;
de trabalho do desenvolvedor.
• CHECK-IN: Insere ou atualiza um item de configuração             Na Figura 2 vemos uma representação de baselines adaptada
no repositório, incrementando a versão do ICS, e fazendo o        de Molinari (2007, p 56).
registro das informações de mudança.

Identificação de ICS’s
  A identificação dos ICs é uma área de extrema importância
dentro da Gerência de Configuração de Software. Sem uma
identificação correta de um item, é impossível gerenciar este
processo.
  Cada ICS deve ser identificado através de características
                                                                  Figura 2. Entendendo um baseline
distintas que o caracterizam unicamente. Estas características
podem ser um nome, uma descrição, uma lista de recursos etc.      Controle de Versão
É necessário que cada organização defina suas convenções de         Segundo Pressman (2006, p. 608), controle de versões
identificação.                                                    combina procedimentos e ferramentas para gerir diferentes
                                                                  versões de objetos de configuração que são criados durante
Baseline                                                          o processo de software. Um sistema de controle de versão
  Um baseline pode ser descrito como a situação de uma cole­      implementa ou está diretamente integrado com quatro ca­
ção de ICS’s similares em um momento especifico do ciclo de       pacidades principais:
vida de um software que foram aprovados e armazenados em          • Um banco de dados de projeto (repositório) que guarda
uma biblioteca controlada. Pode ser descrito também como a        todos os objetos de configuração relevantes;
conexão de um item de configuração com um determinado             • Uma capacidade de gestão de versão que guarda todas as
marco no projeto (milestone). Um baseline pode ser visto como     versões de um objeto de configuração;
um conjunto de itens de configuração identificados e liberados    • Uma facilidade de construir que permite ao engenheiro de
para uso, independente de suas versões.                           software coletar todos os objetos de configuração relevantes
  É importante identificar e agrupar estes ICS’s dentro dos       e construir uma versão especifica do software;
baselines apropriados pois desta forma, cria-se uma estrutura     • Capacidade de acompanhamento de tópicos (também cha­
que facilita o rastreamento de mudanças à estes ICS’s.            mado de acompanhamento de bugs).
  Em cada fase do processo de desenvolvimento, um conjunto
bem definido de itens de configuração deve ser estabelecido.        Segundo Molinari (2007, p. 168), alguns colocam que a prin­
Tal conjunto representa um estágio do desenvolvimento, o qual     cipal missão de um sistema de controle de versões é permitir
é passível de modificações apenas mediante um mecanismo           a edição colaborativa e o compartilhamento de dados, outros
formal de alterações. A este conjunto é dado o nome de base­      dizem que o sistema de controle de versões rastreia e controla
lines, ou configurações base do sistema.                          todos os artefatos do projeto e desse modo consegue coorde­
  Em princípio, baselines poderiam ser estabelecidas em qual­     nar o trabalho paralelo de desenvolvedores.
quer ponto do desenvolvimento. Entretanto, a grande vanta­          Ainda segundo Molinari (2007, p.168), independente do que
gem do conceito está em se fazer coincidir o estabelecimento de   cada um pensa sobre controle de versões, algumas das suas
baselines com os finais de fase do ciclo de vida do produto.      características perceptíveis são:
  O desenvolvimento com configurações base pode, então, ser       • Mantém e disponibiliza cada versão já produzida de cada
resumido nos seguintes pontos:                                    item do projeto;
• Caracterização do ciclo de vida, identificando-se as fases      • Possui mecanismos para gerenciar diferentes ramos de
pelas quais o desenvolvimento do software irá passar;             desenvolvimento possibilitando a existência de diferentes
• Definição do conjunto de baselines, estabelecendo-se quais      versões de maneira simultânea;
serão os ICS’s que a irão compor;                                 • Estabelece uma política de sincronização de mudanças que
• Estabelecer o marco o qual a baseline irá representar. Uma      evita a sobreposição de mudanças;
nova baseline é estabelecida no final de cada fase do ciclo de    • Fornece um histórico completo de alterações sobre cada
vida do software;                                                 item do projeto.


                                                                                 Edição 24 - Engenharia de Software Magazine   17
O sistema de controle de versões é o responsável por manter
as diversas versões dos ICS’s e faz isso através de um esquema
de arquivos e diretórios presentes no repositório, registrando
não só as alterações realizadas em cada arquivo mas também
na estrutura do diretório em si.
  O repositório evolui, junto com o projeto guardando as múlti­
plas versões que o compõe organizadas em forma de revisões.
As revisões são as situações estáticas de todos os arquivos do
projeto em um determinado instante de tempo.
  Em empresas de grande porte, onde existem vários profissio­
                                                                    Figura 3. Branch de desenvolvimento
nais trabalhando concorrentemente nos mesmos arquivos, faz-se
necessário uma política para ordenar e integrar estas alterações,   Merge
a fim de evitar a perda de um trabalho ocasionada quando uma          Em projetos onde existe um grande número de pessoas en­
pessoa sobrescreve o trabalho de outra.                             volvidas, é comum que elas possuam uma cópia de trabalho da
  Os sistemas de controle de versão implementam esta política,      linha principal de desenvolvimento. Neste contexto, o conceito
assegurando que os desenvolvedores não trabalhem diretamen­         de merge é também uma parte fundamental do controle de
te nos arquivos do repositório, mas sim em cópias de trabalho       versões. O Merge faz a fusão de dois arquivos que estão sendo
destes arquivos em suas próprias máquinas. Isto permite que         alterados simultaneamente por desenvolvedores diferentes
um desenvolvedor faça seu trabalho de forma independente e          garantindo que a versão final contenha todas as alterações.
sem interferir no trabalho de outro. Após terminado o trabalho,     Quando isso não é possível, mantém apenas a última versão
o arquivo deve ser colocado novamente no repositório e para que     guardada e emite uma mensagem de “arquivo fora de data”
alterações não sejam inadvertidamente sobrepostas, o sistema        para que as diferenças sejam resolvidas com intervenção
de controle de versões pode fazer uso das seguintes políticas       humana. Em alterações demoradas, onde normalmente é
de versionamento:                                                   utilizada a técnica de branch, é recomendável que se façam
• Trava-Modifica-Destrava: Apenas uma pessoa por vez detém          merges, periodicamente entre a linha principal e a ramificação,
o direito de alterar um determinado arquivo. O sistema trava o      para que no final não fique inviável fazer o merge devido ao
arquivo quando uma pessoa retira uma cópia para manutenção          grande número de conflitos gerados entre as diferenças das
e só libera a cópia para edição à outra pessoa, quando a primeira   diversas versões.
publica sua nova versão. Esta política é limitada e pode causar
problemas administrativos e forçar a serialização do trabalho,      Tags
entretanto, é a solução indicada para organizações que neces­        Um outro tipo de controle de versão são as tags. Tags são
sitam de um alto grau de formalização.                              como fotografias de um projeto, em um determinado instante
• Copia-Modifica-Resolve: Não utiliza travamento de arquivos.       do tempo. São rótulos associados a um conjunto de arquivos
Nesta política, cada desenvolvedor trabalha de forma indepen­       usados para denominar um projeto ou uma nova versão, e que
dente em sua cópia de trabalho, e ao final, as alterações são       rotulam estes arquivos. As tags nas versões de um conjunto
mescladas no repositório, formando a versão final. Esta política    de itens de configuração, existente em diversos sistemas de
pode parecer caótica, mas na prática funciona bem, devido ao        controle de versões, pode ser utilizado para implementar o
baixo índice de conflitos. Os conflitos são causados na maioria     conceito de baseline.
das vezes, por falta de comunicação entre os desenvolvedores.
                                                                    Controle de Modificação
Branch                                                                Mudanças são inevitáveis. Todo produto de software sofre
  Branching (ou ramificação em português) é uma parte funda­        mudanças durante o seu ciclo de vida, seja por erro de cons­
mental do controle de versões. O conceito de branching reside       trução, ou por necessidade de mudanças solicitadas pelos
em se iniciar uma nova linha de desenvolvimento em paralelo         clientes. Em projetos de grande porte, fazer modificações sem
à uma principal já existente.                                       um esquema formal de controle pode levar ao caos. Alguns
  Esta técnica é extremamente útil em situações onde temos          dos problemas que podem ser causados em projetos devido a
que fazer grandes alterações em objetos de configuração e que       mudanças não controladas são:
provavelmente levarão muito tempo, sem contudo afetar a linha       • Aumento do custo do projeto;
principal de manutenção do sistema. Nesta situação, cria-se uma     • Atrasos em entregas planejadas;
segunda cópia do objeto em questão e trabalha-se em paralelo        • Impacto em outros objetos de configuração;
à linha principal. Ao longo do tempo, as manutenções feitas na      • Degradação da qualidade do software;
linha principal poderão ser incorporadas na ramificação para        • Retrabalho.
que defeitos encontrados na cópia original possam ser conser­
tados também na ramificação. A Figura 3 demonstra como é a           Controle de modificações podem incluir procedimentos
técnica de branching ao longo do tempo.                             humanos e também o uso de ferramentas automatizadas, e


18   Engenharia de Software Magazine - Gerência de Configuração
Projeto



seu objetivo é controlar estas mudanças e manter informações       • Revisões técnicas formais;
sobre os pedidos de mudança, nos produtos e as implementa­         • Auditoria de configuração de software.
ções realizadas em função destas mudanças.
  Informações do tipo quem, quando, por que e o que foi mu­          A revisão técnica tem como foco a correção técnica do ICS
dado, em um item de configuração, são guardadas para que           que foi modificado a partir de uma requisição. Revisores
seja possível haver uma rastreabilidade entre suas versões         avaliam o ICS para determinar se o mesmo é consistente.
anteriores e posteriores.                                          Revisões técnicas formais normalmente são feitas para todas
  O processo de controle de mudanças começa quando o clien­        as modificações, exceto as mais triviais.
te emite um pedido de comunicação. Este pedido passa pela            A auditoria de configuração de software tem como objetivo
análise de uma Comissão de Controle de Modificações (do            complementar a revisão técnica formal e trata dos seguintes
inglês Change Control Board – CCB), que é responsável pela         aspectos:
sua aprovação ou não. É gerada então uma ordem de modifi­          • Verifica se a modificação técnica especificada foi realizada e
cação de engenharia (Engineering Change Order – ECO) pra as        se foi incorporada alguma modificação adicional;
modificações aprovadas. O ICS é retirado do repositório para       • Verifica se uma revisão técnica formal foi feita para avaliar
uma área de trabalho exclusiva do profissional, que irá executar   a correção técnica;
as mudanças. As mudanças são executadas, as atividades de          • Verifica se o processo de software foi seguido;
SQA são aplicadas, e os ICS’s modificados são introduzidos         • Verifica se constam anotados no ICS modificado, dados de
no repositório com os mecanismos adequados de controle             rastreabilidade tais como data da modificação, autor, nº de
de versão. Controles para acesso aos ICS’s pelos engenheiros       requisição etc.;
e controles de sincronização de modificações paralelas por         • Verifica se os procedimentos de GCS para registrar e relatar
pessoas diferentes são usados nesta etapa.                         a modificação, foram seguidos;
   A Figura 4 esboça o processo formal de controle de modifi­      • Verifica se todos os ICS’s relacionados foram atualizados de
cações segundo Pressman (2006, p 610).                             forma adequada.

                                                                    Quando a GCS é uma atividade formal, a auditoria de confi­
                                                                   guração é conduzida pelo grupo responsável pela garantia de
                                                                   qualidade. A auditoria também tem como objetivo garantir que
                                                                   os ICS’s corretos foram incorporados em um build específico e
                                                                   que sua documentação está consistente com a nova versão.

                                                                   Relatórios de Estado
                                                                     Os relatórios de estado é uma tarefa de GCS que tem por
                                                                   objetivo responder às seguintes questões:
                                                                   • O que aconteceu ?
                                                                   • Quem fez ?
                                                                   • Quando aconteceu ?
                                                                   • O que mais será afetado ?

                                                                     O relatório de estado reúne informações de todos os estágios
                                                                   da GCS. Atividades como identificação de ICS’s, aprovação de
                                                                   modificações, resultado das auditorias de configuração são
                                                                   registradas no relatório de estado. O relatório de estado deve
                                                                   ser colocado em um banco de dados de maneira que todas
                                                                   as pessoas envolvidas na manutenção de software tenham
                                                                   acesso as informações ali contidas. O principal objetivo de
                                                                   um relatório de estado é manter a gerência e os profissionais
                                                                   informados das modificações sofridas por um software, de­
                                                                   vendo ser gerado regularmente.
Figura 4. Processo de controle de modificações (Pressman, 2006)
                                                                   Ferramentas de Apoio à GCS
Auditoria de Configuração                                            Existem diversas ferramentas disponíveis no mercado para
 Além dos controles de identificação, versão e modificação         apoiar a Gerência de Configuração de Sistemas. As funciona­
vistos anteriormente, precisamos implementar algum mecanis­        lidades, documentação, o suporte disponível e popularidade
mo que nos garanta que as modificações foram feitas de forma       variam bastante. As ferramentas comerciais apresentam
adequada. Este mecanismo envolve dois aspectos:                    maior número de funcionalidades mas tem um alto custo. As


                                                                                 Edição 24 - Engenharia de Software Magazine   19
ferramentas open source além de baixo custo, também apre­            reconhecido como sendo líder isolado na categoria Standalone
sentam vantagens como qualidade e segurança. A Tabela 1              Software Configuration Manager (SSCM) tendo uma forte
apresenta algumas ferramentas e suas aplicações.                     atuação na categoria Software Configuration and Change
                                                                     Management (SCCM).
            Tipo de ferramenta                  Nome
                                                                       O Subversion começou a ser escrito no ano 2000 como um
Controle de Versão                CVS
                                                                     esforço para criar um sistema de controle de versão o qual
                                  SubVersion
                                                                     operasse de forma parecida com o CVS porém sem os seus
Controle de mudança               Mantis
                                                                     problemas, e suprindo as facilidades não existentes no CVS. No
                                  Bugzilla
                                                                     ano de 2001, o Subversion já estava suficientemente desenvol­
Integração (Build)                Scons
                                                                     vido para ser capaz de hospedar seu próprio código fonte.
Tabela 1. Ferramentas para GCS                                         Algumas de suas facilidades são:
                                                                     • Operações de “Commit” são atômicas. Interrupções nestas
CVS                                                                  operações não causam inconsistências no repositório;
  O CVS, ou Concurrent Version System (Sistema de Versões            • Mudanças de nomes, cópias, e movimentações de arquivos
Concorrentes), é um sistema de controle de versão open source,       são guardadas como histórico de revisões;
que permite que se trabalhe com diversas versões de arquivos         • Mudanças de nomes em diretórios são guardados também
organizados em um diretório e localizados local ou remota­           como versões. Árvores de diretórios inteiras podem ser movi­
mente, mantendo-se suas versões antigas e os logs de quem e          das ou copiadas com rapidez e tem estas operações guardadas
quando manipulou os arquivos.                                        no histórico de revisões;
  É especialmente útil para se controlar versões de um software      • Servidor Apache HTTP como servidor de rede;
durante seu desenvolvimento, ou para composição colaborativa         • Operações de Branch e Tag são menos custosas, independente
de um documento.                                                     do tamanho do arquivo. O Subversion não faz distinção entre
  O CVS utiliza uma arquitetura cliente-servidor: um servidor        Tag, Branch e um diretório;
armazena as versões atuais do projeto e seu histórico, e os clien­   • Permite operações de “lock” para arquivos que não podem
tes se conectam a esse servidor para obter uma cópia completa        ser fundidos (sofrer operação de “merge”).
do projeto, trabalhar nessa cópia e então devolver suas modifica­
ções. Tipicamente, cliente e servidor devem estar conectados por     Mantis
uma rede local de computadores, ou pela internet, mas o cliente        Mantis é um sistema de controle de mudança open source,
e o servidor podem estar na mesma máquina se a configuração          baseado em Web, bastante popular. Foi escrito em linguagem
do CVS for feita de maneira a dar acesso a versões e histórico       PHP e trabalha com banco de dados MySQL, MS SQL e Pos­
do projeto apenas a usuários locais.                                 tgreSQL e um webserver. Pode ser instalado em Windows,
  O CVS possui limitações tais como:                                 Linux, Mac OS, OS/2 e outros e funciona na maioria dos web
• Os arquivos em um repositório CVS não podem ser re­                browsers como um cliente.
nomeados, eles devem ser explicitamente removidos e re-                Algumas de suas características são:
adicionados;                                                         • É um software livre (licença GPL);
• O protocolo do CVS não permite que os diretórios sejam mo­         • Fácil de instalar;
vidos ou renomeados. Cada arquivo do subdiretório em questão         • Fácil de avaliar;
deve ser individualmente removido e re-adicionado;                   • É baseado em Web;
• Não permite “lock” (permite que dois usuários alterem o            • Suporta qualquer plataforma que roda PHP;
mesmo arquivo ao mesmo tempo) e em alguns casos pode ser             • Suporta múltiplos projetos por instancia;
mais custoso resolver o conflito do que evitar que ele ocorra.       • Suporte para Projetos, Sub-projetos e categorias;
                                                                     • Suporte a diferentes níveis de acesso de usuário por projetos;
Subversion                                                           • Suporta log de mudanças;
 Subversion (também conhecido por SVN, o nome da sua ferra­          • Possui diversos relatórios e gráficos;
menta de linha de comando) é um sistema de controle de versão        • Usuários podem monitorar as solicitações;
open source projetado especificamente para ser um substituto         • Envio de notificações por e-mail;
moderno do CVS, que se considera ter algumas limitações.             • Permite histórico de mudanças;
 O Subversion é bem conhecido na comunidade que utiliza              • Integração com SVN e CVS.
código aberto e é utilizado em diversos projetos incluindo
Apache Software Foundation, KDE, Free Pascal, FreeBSD, GCC           Bugzzila
Python, Django, Ruby, Mono, SourceForge.net, ExtJS e Tigris.org.      Bugzilla é uma ferramenta baseada em Web e e-mail, que dá
O Google Code também faz a hospedagem de seus projetos de            suporte ao desenvolvimento do projeto Mozilla, rastreando
código aberto utilizando o Subversion.                               defeitos de software, e servindo também como plataforma
 O Subversion também é adotado no mundo corporativo.                 para solicitações e controle de mudanças. Como projeto de
Em 2007, a Forrest Research reportou que o Subversion foi            software livre, é mantido por voluntários, sendo utilizado


20     Engenharia de Software Magazine - Gerência de Configuração
Projeto



por diversos outros projetos e empresas. Algumas de suas           Institute) na Carnegie Mellon University a pedido do Depar­
características são:                                               tamento de defesa dos EUA que necessitava de um modelo
• Capacidade de pesquisa avançada;                                 para avaliar os seus fornecedores de software. A versão 1.1
• Notificações por e-mail controladas pelas preferências de        foi publicada em 2002 e a atual, versão 1.2 , foi publicada em
usuários;                                                          agosto de 2006.
• Lista de defeitos em diversos formatos;                            A missão inicial da equipe que produziu o CMMI era com­
• Relatórios periódicos (diários, semanais etc.) enviados por      binar três modelos:
e-mail;                                                            • Capability Maturity Model for Software (SW-CMM) v. 2.0
• Controle de tempo de execução de uma solicitação;                draft C
• Sistema de atribuição de tarefas;                                • Systems Engineering Capability Model (SECM)
• Diversas versões de localização (incluindo Português             • Integrated Product Development Capability Maturity Model
– Brasil).                                                         (IPD-CMM) v. 0.98

SCons                                                                O CMMI permite abordar a avaliação e o melhoramento de
  SCons é uma ferramenta de construção de software open            processos utilizando dois tipos de representação: contínua e
source escrita em Python. O SCons provê uma ponte entre            por estágio.
plataformas e é o substituto para o utilitário clássico Make com     A representação contínua permite a uma organização sele­
funcionalidades similares ao autoconf/automake, e possui com­      cionar áreas de processo e melhorar os processos relacionados
piladores integrados. Algumas de suas características são:         a ela. Nesta representação, são utilizados níveis de capacidade
• Seus arquivos de configuração são scripts Python;                para caracterizar os melhoramentos relativos a uma área de
• Analise automática de dependências, nativa para C, C++ e         processo individual.
Fortran, extensível para outras linguagens;                          A representação por estágios usa um conjunto pré-definido
• Suporte nativo para adquirir arquivos fonte do CVS;              de áreas de processo para definir uma via de melhoramento
• Suporte nativo ao MS Visual Studio .NET                          para uma organização. Esta via de melhoramento é carac­
• Detecção de mudanças de construção usando assinaturas            terizada por níveis de maturidade. Cada nível fornece um
baseadas em MD5.                                                   conjunto de áreas de processo que caracterizam diferentes
                                                                   comportamentos organizacionais.
Gerência de configuração nos modelos de maturidade                   A Figura 5 mostra uma visão geral por estágio dos níveis de
  A partir dos anos 90, iniciou-se um movimento no sentido de      maturidade e as áreas de processo envolvidas. Podemos notar
solucionar problemas que afetavam a industria de software.         na figura que a Gestão de Configuração de Software é uma
Problemas como descumprimento de prazos, estouro de or­            área de processo do nível 2 do modelo de maturidade.
çamentos, falta de funcionalidades requeridas pelos clientes e       Segundo o CMMI-DEV (2006, p.114), o propósito da Gestão
outros, afetavam de maneira drástica a qualidade dos produtos      de Configuração de software (GCS) é estabelecer e manter a
de software produzidos nesta época.                                integridade dos produtos de trabalho, usando identificação da
  A maioria destes problemas originavam-se do fato da cons­        configuração, controle de configuração, status da configuração
trução de software ser conduzida utilizando-se processos           contábil e auditoria de configuração.
improvisados e pouco ou nada controlados. Sendo assim,               As metas e práticas especificas da gestão de configuração
vários órgãos e associações começaram a criar modelos que          definidas na CMMI são:
orientassem o desenvolvimento destes produtos.                       SG 1. Estabelecer baselines.
  Embora hoje existam diversos modelos de maturidade                  SP 1.1 Identificar itens de configuração
voltados para o desenvolvimento de software objetivando               SP 1.2 Estabelecer um Sistema de Gestão de Configuração
aumentar a produtividade da construção e a sua qualidade,             SP 1.3 Criar ou liberar baselines
todos incluem a utilização de práticas de GCS que variam de          SG 2. Rastrear e controlar mudanças
acordo com cada modelo.                                                SP 2.1 Rastrear requisição de mudanças
  Neste artigo será apresentado os pontos em comum da apli­            SP 2.2 Controlar itens de configuração
cação da GCS nos modelos CMMI, e MPS.BR.                             SG 3. Estabelecer integridade
                                                                       SP 3.1 Estabelecer registros de Gerencia da Configuração
GCS aplicada no CMMI                                                   SP 3.2 Realizar auditorias de configuração
 O CMMI (Capability Maturity Model Integration) tem como
objetivo prover um modelo de maturidade para desenvolvi­           GCS aplicada no MPS
mento de produtos e serviços de uma maneira geral. Ele aponta        O programa MPS.BR (Melhoria de Processo do Software
práticas que cobrem o ciclo de vida dos produtos desde a sua       Brasileiro) foi criado em 2003 pela SOFTEX (Associação para
concepção até a entrega e manutenção. A versão 1.0 foi publi­      Promoção da Excelência do Software Brasileiro). O MPS.BR
cado em 2000 em substituição ao CMM (Capability Maturity           tem o apoio do Ministério de Ciência e Tecnologia (MCT)
Model) Versão 1.1, criado pela SEI (Software Engineering           da Financiadora de Estudos e Projetos (FINEP) e do Banco


                                                                                 Edição 24 - Engenharia de Software Magazine   21
Figura 5. Visão por nível de maturidade X Áreas de processo



Interamericano de Desenvolvimento (BID). Sua estrutura está             Este modelo surgiu pelo fato de muitas empresas ao busca­
dividida em duas áreas de apoio:                                       rem certificação CMM/CMMI se depararem com os custos
• Fórum de Credenciamento Controle (FCC) cujas atribui­                elevados de implementação/avaliação, inviabilizando as
ções são:                                                              certificações para pequenas empresas.
 I. Emitir parecer que subsidie decisão da SOFTEX sobre o               Uma das metas do programa MPS.BR é definir e aprimorar
 credenciamento de Instituições Implementadoras (II) e Ins­            um modelo de melhoria e avaliação de processo de software
 tituições Avaliadoras (IA);                                           visando preferencialmente às micro, pequenas e médias em­
 II. Monitorar os resultados das Instituições Implementa­              presas, de forma a atender as suas necessidades de negócio
 doras (II) e Instituições Avaliadoras (IA), emitindo parecer          e ser reconhecido nacional e internacionalmente como um
 propondo à SOFTEX o seu descredenciamento no caso de                  modelo aplicável à indústria de software.
 comprometimento da credibilidade do modelo MPS.                        A base técnica para a construção e aprimoramento deste
• Equipe Técnica do Modelo (ETM) cuja atribuição é apoiar a            modelo de melhoria e avaliação de processo de software é
SOFTEX sobre os aspectos técnicos relacionados ao Modelo               composta pelas normas ISO/IEC 12207:2008 [ISO/IEC, 2008a]
de Referência (MR-MPS) e Métodos de Avaliação (MA-MPS)                 e ISO/IEC 15504-2 [ISO/IEC, 2003]. O MPR.BR se propõe ser
para:                                                                  compatível com o modelo CMM/CMMI para software.
 I. Criação e aprimoramento contínuo do MR-MPS, MA-MPS                  Na Figura 6 temos uma visão geral dos principais compo­
 e seus guias específicos;                                             nentes MPS.BR.
 II. Capacitação de pessoas por meio de cursos, provas e                  O Modelo de Referência, MR-MPS, define níveis de ma­
 workshops.                                                            turidade que são uma combinação entre processos e sua


22   Engenharia de Software Magazine - Gerência de Configuração
Projeto



capacidade. Para cada nível de maturidade são estabelecidos      software utilizando-se das ferramentas Mantis para controle de
processos que caracterizam estágios de melhoria da imple­        modificações e Subversion para controle de versões.
mentação de processos na organização. O MR-MPS define sete
níveis de maturidade:                                                Nivel                                     Processos
• A (Em Otimização);                                             A
• B (Gerenciado Quantitativamente);                              B           Gerência de Projetos – GPR (evolução)
• C (Definido);                                                  C           Gerência de Riscos – GRI
• D (Largamente Definido);                                                   Desenvolvimento para Reutilização – DRU
• E (Parcialmente Definido);                                                 Gerência de Decisões – GDE
• F (Gerenciado);                                                D           Verificação – VER
• G (Parcialmente Gerenciado).                                               Validação – VAL
                                                                             Projeto e Construção do Produto – PCP
                                                                             Integração do Produto – ITP
                                                                             Desenvolvimento de Requisitos – DRE
                                                                 E           Gerência de Projetos – GPR (evolução)
                                                                             Gerência de Reutilização – GRU
                                                                             Gerência de Recursos Humanos – GRH
                                                                             Definição do Processo Organizacional – DFP
                                                                             Avaliação e Melhoria do Processo Organizacional – AMP
                                                                 F           Medição – MED
                                                                             Garantia da Qualidade – GQA
                                                                             Gerência de Portfólio de Projetos – GPP
Figura 6. Visão geral dos componentes do MPS.BR                              Gerência de Configuração – GCO
                                                                             Aquisição – AQU
  O primeiro nível da escala é o “G” e o último o “A”. A         G           Gerência de Requisitos – GRE
Tabela 2 mostra os processos exigidos para cada nível de                     Gerência de Projetos – GPR
maturidade.
                                                                 Tabela 2. Níveis de Maturidade do MR-MPS
  Segundo definição do MPS.BR Guia de Implementação (2009,
p. 16), o propósito do processo de Gerência de Configuração      Estudo de caso de uma implementação de GCS com
é estabelecer e manter a integridade de todos os produtos de     Mantis e Subversion
trabalho de um processo ou projeto e disponibilizá-los a todos     A partir de agora será apresentado um estudo de caso de
os envolvidos. A GCS é encarada pelo MPS.BR como sendo           implementação de práticas de GCS com as ferramentas Mantis
um processo do nível de maturidade “F” e portanto deve ter       e Subversion em uma empresa de construção de software de
resultados esperados. Os resultados esperados da GCS são:        pequeno porte. A esta empresa, daremos o nome fictício de
• GCO1 - Um Sistema de Gerência de Configuração é esta­          “Casa do Software”.
belecido e Mantido;
• GCO2 - Os itens de configuração são identificados com base     Cenário
em critérios estabelecidos;                                        A empresa “Casa do Software” é uma empresa de pequeno porte
• GCO3 - Os itens de configuração sujeitos a um controle         e conta com trinta e cinco colaboradores. A empresa desenvolve
formal são colocados sob baseline;                               softwares voltados para áreas comerciais de outras empresas
• GCO4 - A situação dos itens de configuração e das baselines    utilizados por vendedores em seus notebooks nas visitas a seus
é registrada ao longo do tempo e disponibilizada;                clientes. A empresa não possui uma política de GCS implementa­
• GCO5 - Modificações em itens de configuração são               da. Existe apenas uma rotina periódica de back-ups que fica sob
controladas;                                                     responsabilidade do pessoal de suporte de infra-estrutura.
• GCO 6 - O armazenamento, o manuseio e a liberação de itens       As solicitações de modificações são feitas pelos clientes
de configuração e baselines são controlados consistentes;        através de reuniões realizadas com o gerente de projetos e
• GCO7 - Auditorias de configuração são realizadas objeti­       desenvolvedores. A única documentação existente sobre as
vamente para assegurar que as baselines e os itens de confi­     solicitações são as atas das reuniões, não havendo documen­
guração estejam íntegros, completos e consistentes.              tação de acompanhamento da manutenção e aprovação formal
                                                                 das mesmas por parte da gerência de projetos. Existe mais
 Nesta parte do artigo foi mostrado onde a Gerência de confi­    de uma versão do mesmo sistema, como conseqüência de
guração de Software se encaixa nos dois dos principais modelos   alterações feitas especificamente para determinados clientes,
de maturidade de software usados por em presas brasileiras. Na   o que complica ainda mais a manutenção dos produtos de
próxima seção do artigo será apresentado um estudo de caso       software. Como a empresa está em franca expansão, fica clara
de aplicação de GCS em uma empresa de desenvolvimento de         a necessidade de se implementar práticas de GCS que possam


                                                                                    Edição 24 - Engenharia de Software Magazine           23
contribuir para melhorar a qualidade de software da mesma,         Nas seções seguintes mostraremos um PGC para esta em­
além disso, as práticas de GCS adotadas deverão estar em          presa com base em pesquisa nos trabalhos de Borges (2006),
conformidade com o MPS-BR.                                        Barbosa (2007), Neto(2005).
  Como nesta empresa não existe a prática de GCS, será ne­
cessário a realização de treinamentos para que os diversos
colaboradores envolvidos no processo de implementação de
tais práticas e também aqueles que irão fazer uso dela possam
compreender o novo processo e utilizá-lo conforme definido
no Plano de Gerência de Configuração.
  Como projeto piloto, foi selecionado o SISVEN (Sistema de
Vendas). O SISVEN é um sistema feito em Java destinado a
tirar pedidos de vendas, fazer prospecção de clientes e roda
em notebooks utilizados por vendedores que visitam clientes
em todo o país.

Plano para implementação da GCS na empresa
  Devido ao tamanho da empresa e da pouca experiência do
pessoal envolvido, será implantada a GCS sob a perspectiva
de desenvolvimento, a qual abrange os sistemas de Controle
                                                                  Figura 7. Fluxo do Plano de Implementação da GCS na empresa
de Modificações, Controle de Versões e Gerenciamento da
Construção.                                                       Histórico das Revisões
  Embora a implementação seja feita sob esta perspectiva, as       As tabelas apresentadas nas Tabelas 3 e 4 deverão ser altera­
funções da perspectiva gerencial podem ser implementadas          das sempre que alguma modificação for feita no PGC.
por estes três sistemas acrescendo-se procedimentos manuais.
Neste artigo apresentaremos uma solução baseada em Mantis            Data      Versão                 Descrição                    Autor
para o “Controle de modificações”, e Subversion para o “Con­      05/07/2009     1.0      Criação da primeira versão   Alberto Boller
trole de Versões”. O “Gerenciamento de construção” feito por
um sistema automatizado não será tratado neste trabalho. Na
Figura 7 podemos ver o fluxo do Plano para implementação da
GCS na empresa.

Criação da Equipe de Gerência de Configuração (EGC)               Tabela 3. Histórico das Revisões
 A Equipe de Gerência de Configuração (EGC) será composta
por um gerente de configuração, um gerente de projetos e por         Data      Versão                    Nome                      Cargo
uma pessoa de infra-estrutura.                                    05/07/2009     1.0      Alberto Boller Filho         Gerente de Projetos
 A responsabilidade deste grupo é procurar melhorar de for­
ma constante as atividades de GCS definidas para a empresa,
seja mudando processos ou incluindo novas ferramentas.

Criação do Comitê de Controle de Configuração (CCC)               Tabela 4 . Aprovações
  O Comitê de Controle de Configuração (CCC) será com­
posto pelo gerente de projetos e o Gerente de Qualidade. A        Histórico das Revisões
responsabilidade do CCC será avaliar se uma determinada           Aprovações
modificação deve ser implementada, rejeitada ou posterga­
da, baseando-se em análises de impacto que tal modificação        Identificação dos ICS’s
irá causar.                                                         Os itens de configuração, os níveis de controle exigidos e
                                                                  os identificadores para cada um encontram-se descritos na
Criação do Plano de Gerência de Configuração (PGC)                Tabela 5. Outros itens também poderiam ser controlados
  O Plano de Gerência de Configuração (PGC) define formal­        mas para exemplificar este estudo de caso, os itens constan­
mente os padrões e práticas adotadas pela empresa no que          tes nesta tabela são suficientes.
tange à GCS. Neste documento estão descritos os procedi­
mentos a serem seguidos, as ferramentas a serem utilizadas,       Regras para nomeação dos itens de configuração
os ICS’s que deverão estar sob controle da GCS, sua forma de       Com exceção do Plano de Gerencia de Configuração,
identificação e todas as diretrizes que qualquer sistema deverá   Fontes e Executáveis, o nome dos artefatos deverá seguir
seguir dentro da empresa.                                         a seguinte regra:


24   Engenharia de Software Magazine - Gerência de Configuração
Projeto



 <SISVEN>-<identificador_do_artefato>-<xxx>                                    Armazenamento dos ICS’s
                                                                                Todos os ICS’s especificados na Tabela 5 serão armaze­
 Onde <xxx> é um número sequencial começando em 001.                           nados em um repositório do Subvesion em um servidor de
                                                                               arquivos que poderá ser acessado via Internet ou através
           Descrição                Identificador          Nível de Controle   da rede local. A estrutura do diretório do repositório para
Casos de uso                             UC         Versão e mudança           armazenamento do sistema SISVEN pode ser visto na
Diagrama de Classes                      DC         Versão e Mudança           Figura 8.
Documento de Requisitos                  DR         Versão e Mudança
Plano de Testes                         PTES        Versão e Mudança
Plano de Gerencia de Configuração         -         Versão e Mudança
Código Fonte                              -         Versão e Mudança
Release                                   -         Versão e Mudança

Tabela 5. Itens de Configuração

Regras para versionamento
  As regras de versionamento serão aplicadas apenas nas
identificações de tags e branches, uma vez que o Subver­
sion controla as versões de itens de configuração a cada
operação de commit.
  O padrão de versionamento utilizará a regra descrita a
seguir:
  <XX>.<YY>
                                                                                         Figura 8. Estrutura de diretório do repositório
  onde:
• XX é um número decimal que representa a versão;                              Gerenciamento de Baselines
• YY é um número decimal que representa a modificação.                           Sempre que uma modificação for concluída, seja em algum
                                                                               documento ou código fonte e o gerente de projetos tiver
  O primeiro numero de versão deverá ser 01.00. A cada mo­                     inspecionado os testes e aprovado, o desenvolvedor poderá
dificação, o valor YY deve ser incrementado de uma unidade                     solicitar ao gerente de configuração a criação de uma base­
e retorna para 00 assim que uma nova versão é gerada.                          line. As baselines ficarão armazenadas na subpasta “tag”
                                                                               da estrutura de diretório do repositório.
Identificação de Tags                                                            Os branches deverão ser criados pelo gerente de configu­
  Sempre que uma nova baseline for criada, esta deverá ser                     ração apenas quando a modificação exigida pela solicitação
identificada por uma tag seguindo as seguintes regras:                         de mudança levar um tempo para sua conclusão superior
• Baseline de Documentos                                                       a três semanas, caso contrário será feita na mainline cuja
DOC-V-<versão>                                                                 subpasta da estrutura de diretório chama-se “trunk” (ver
• Baseline de Código Fonte                                                     Figura 8).
FONTE-V-<versão>                                                                 Apenas o gerente de configuração terá autoridade para
• Baseline de Releases                                                         criar branches e tags e deverá fazê-lo mediante a solicitação
RELEASE-V-<versão>                                                             formal do gerente de projeto que deverá enviar um e-mail
                                                                               especificando o que e para quem deve ser criado.
 Onde <versão> segue as regras descritas no item anterior.
                                                                               Estabelecimento de um sistema de GCS
Identificação de Branches                                                        Conforme descrito no MPS.BR Guia de Implementação
  Sempre que houver necessidade de criação de um branch, sua                   (SOFTEX, 2009, p. 20), para que a Gerência de Configu­
identificação deverá obedecer aos seguintes padrões:                           ração ocorra de forma sistemática, é necessário que seja
• Branch de Documentos                                                         estabelecido um sistema de Gerência de Configuração. Esse
  DOC-MANUT-<número_da_solicitação_de_modificação>                             sistema pode ser decomposto em três subsistemas: sistema
• Branch de Código Fonte                                                       de controle de versões, sistema de controle de modificações
  FONTE-MANUT-< número_da_solicitação_de_modificação>                          e sistema de gerenciamento de construção.
• Branch de Releases                                                             Para o subsistema de controle de modificações, utiliza­
  RELEASE-MANUT-< número_da_solicitação_de_modificação>                        remos a ferramenta Mantis. A escolha desta ferramenta
                                                                               está apoiada no fato de ser open source (o que diminui os
 O <número_da_solicitação_de_modificação> será aquele atri­                    custos), por ter integração direta com o Subversion (o que
buído pelo campo ticket do Mantis conforme veremos adiante.                    permite dar visibilidade ao processo), e ser uma aplicação.


                                                                                             Edição 24 - Engenharia de Software Magazine   25
A Figura 9 ilustra o fluxo básico de controle de modificações               produto TortoiseSVN que faz a mesma coisa só que de forma
que será seguido quando uma solicitação de modificação                      interativa e visual facilitando o trabalho.
for feita pelo usuário.




                                                                            Figura 10. Tela de login do Mantis




Figura 9. Fluxo do Controle de modificações da empresa “Casa do Software”   Figura 11. Visão inicial dos status de solicitações de mudanças

  Nas Figuras 10 a 14 podemos visualizar como o Mantis
trata o controle de uma solicitação de modificações. Na
Figura 10 observamos que existe um controle de acesso
às solicitações a nível de tipo de usuário que pode ser um
relator, desenvolvedor, gerente administrador etc, cada qual
com suas restrições de acesso.
  Na Figura 11 temos uma visão (a nível de usuário) das diver­
sas solicitações e seus status. Nas Figuras 12 a 14 aparece em
detalhes todos os tramites pelos quais passou uma solicitação
de mudanças, permitindo manter informado o usuário solici­
tante e todos os outros envolvidos no processo de GCS.
  Para o subsistema de controle de versões, será utilizado o
Subversion. A escolha desta ferramenta também está baseada
no fato de ser open source, ter integração com o Mantis e com               Figura 12. Visão detalhada de uma solicitação de mudança (Informações
o Eclipse. O Subversion possui uma parte server que roda em                 gerais)
um servidor e que fica responsável por fazer as operações de
check-in, check-out, controle de lock, merge, controle de acesso             Na Figura 15 é apresentado um fluxo básico de utilização
e outras. O Subversion possui também uma parte client, que                  do Subversion.
roda na máquina do desenvolvedor e que tem a função de                       Nas Figuras 16 a 23 são apresentados exemplos das funções
solicitar à parte server as funções necessárias. Como a parte               descritas na Figura 15 usando-se o TortoiseSVN.
client do Subversion é executada em linha de comando, e por                  As Figuras 16 e 17 mostram que o desenvolvedor deve fazer
esta razão ser pouco amigável, iremos utilizar como client o                uma cópia dos ICS’s do repositório para seu disco local a fim


26    Engenharia de Software Magazine - Gerência de Configuração
Projeto



de poder fazer as modificações necessárias utilizando-se da
operação de check-out. A Figura 18 mostra que novos itens de
configuração são adicionados à cópia local do repositório atra­
vés de operação de add. A Figura 19 mostra uma operação de
update para atualizar a cópia local do repositório. As Figuras 20
à 22 mostram uma atualização da mainline através de uma
operação de commit. Vale observar neste ultimo caso que esta
operação é controlada com autenticação de usuário e senha.
Por fim, a Figura 23 mostra um log com todas as operações
executadas neste repositório ao longo do tempo.
 Através das figuras vistas pode-se concluir que o Subversion
                                                                        Figura 16. Fazendo check-out
controla de forma adequada o armazenamento e manuseio de
ICS’s, fornecendo dados para sua auditoria.




                                                                        Figura 17. Resultado da operação de check-out

Figura 13. Visão detalhada de uma solicitação de mudanças (Anotações)




                                                                        Figura 18. Adicionando novos programas ao repositório local


Figura 14. Visão detalhada de uma solicitação de mudança (Histórico
do caso)




Figura 15. Fluxo básico de utilização do subversion                     Figura 19. Fazendo uma operação de update para atualizar a cópia local


                                                                                        Edição 24 - Engenharia de Software Magazine       27
Figura 20. Iniciando uma operação de commit                          Figura 23. Log das operações realizadas no repositório


                                                                      Instalação do Mantis
                                                                        A versão do Mantis para Windows pode ser baixada a
                                                                      partir do site “http://www.mantisbt.org/download.php”.
                                                                      A sua versão estável mais recente é a MantisBT 1.1.8. Os se­
                                                                      guintes softwares são requeridos e devem ser instalados:
                                                                      • PHP 4.3.0 and higher
                                                                      • MySQL database 4.1.1 and higher (MS SQL and DB2 are
                                                                      also supported).
                                                                      • Web server (Apache, IIS, etc.)

                                                                       Como forma de facilitar a instalação dos softwares acima,
                                                                      pode ser instalado a última versão do XAMPP que traz
                                                                      todos os requisitos para rodar o Mantis. O XAMPP pode
Figura 21. Operação de commit (autenticação de usuário autorizado)    ser baixado a partir do site www.baixaki.com.br.
                                                                       Caso seja instalado o XAMPP, o diretório de instalação do
                                                                      Mantis deve estar localizado na pasta “htdocs” existente
                                                                      no diretório de instalação do XAMPP.
                                                                       O Mantis é simples de instalar. Basicamente é só seguir
                                                                      as instruções de instalação que irão surgir na tela.

                                                                      Configuração do Mantis
                                                                        Após instalado o Mantis é necessário configurar o arquivo
                                                                      “config.inc.php” com os parâmetros corretos para emissão
                                                                      de e-mails. A configuração utilizada neste trabalho está
                                                                      apresentada na Figura 24. Os campos “user”, “domínio” e
                                                                      “password” que aparecem no texto devem ser substituídos
                                                                      pelos correspondentes de cada caso.
                                                                        A configuração listada na Figura 24 já inclui os parâ­
Figura 22. Resultado da operação de commit                            metros necessários para integração com o Subversion. O
                                                                      significado de cada parâmetro pode ser obtido no manual
                                                                      do Mantis no endereço “http://manual.mantisbt.org/
Resultados esperados do MPS.BR alcançados na solução                  index.php”.
adotada                                                                 Vale observar que para que o envio de e-mails a cada novo
  Conforme descrito anteriormente, a solução adotada deve­            status de uma solicitação de modificação ocorra, é neces­
rá estar em conformidade com o modelo MPS-BR.                         sário a instalação do PHPMailer, que pode ser encontrado
  Segundo o MPS.BR Guia Geral (SOFTEX, 2009, p.23) o                  no site “http://phpmailer.sourceforge.net”. A instalação do
processo de Gerencia de Configuração encontra-se no nível             PHPMailer é simples, bastando para tanto copiar os arqui­
“F” do MR-MPS e deve atingir sete resultados esperados.               vos “class.smtp.php” e “class.phpmailer.php” para o diretó­
A Tabela 6 mostra os resultados esperados e os itens deste            rio destinado aos arquivos de include. No caso do XAMPP o
trabalho onde estão contemplados.                                     diretório é “<diretório_de_instalação_do_XAMPP> php


28   Engenharia de Software Magazine - Gerência de Configuração
Projeto


                                       Resultado esperado                                                                                  Seção
GCO 1. Um Sistema de Gerência de Configuração é estabelecido e mantido                            Estabelecimento de um sistema de GCS
GCO 2. Os itens de configuração são identificados com base em critérios estabelecidos        Identificação dos ICS’s
                                                                                             Regras para nomeação dos itens de configuração
                                                                                             Regras para versionamento
                                                                                             Identificação de Tags
                                                                                             Identificação de Branches
GCO 3. Os itens de configuração sujeitos a um controle formal são colocados sob baseline     Armazenamento dos ICS’s
                                                                                             Gerenciamento de Baselines
                                                                                             Estabelecimento de um sistema de GCS
GCO 4. A situação dos itens de configuração e das baselines é registrada ao longo do tempo e Gerenciamento de Baselines
disponibilizada;                                                                             Estabelecimento de um sistema de GCS

GCO 5. Modificações em itens de configuração são controladas;                                     Estabelecimento de um sistema de GCS

GCO 6. O armazenamento, o manuseio e a liberação de itens de configuração e baselines são Estabelecimento de um sistema de GCS
controlados

GCO 7. Auditorias de configuração são realizadas objetivamente para assegurar que as baselines e os Estabelecimento de um sistema de GCS
itens de configuração estejam íntegros, completos e consistentes


Tabela 6. Resultados esperados no nível F do MPS.BR

PEAR”. A instalação está descrita no arquivo “readme” que
traz também um exemplo simples.

Instalação do Subversion
  A instalação do Subversion é mais simples do que a do
Mantis. O arquivo de instalação pode ser obtido no ende­
reço http://www.collab.net/downloads/subversion/. O
único software requerido é o Apache version: 2.2.11 que
já estará instalado caso o XAMPP tenha sido instalado
primeiro. Vale ressaltar que neste endereço existem dois
arquivos de instalação que devem ser baixados:
• CollabNet Subversion Server and Client v1.6.3 (for
Windows)
• CollabNet Subversion Command-Line Client v1.6.3 (for
Windows)

  O primeiro é obrigatório para o funcionamento das ope­
rações. Para o segundo arquivo, poderá ser usada a alter­
nativa do software “TortoiseSVN” que é mais amigável e
tem integração direta com o Windows Explorer. O arquivo
para instalação do TortoiseSVN pode ser encontrado no
site “www.baixaki.com.br”. Não é necessário configuração
adicional no software para o seu funcionamento, porém,
para cada repositório deverá ser configurado os perfis                                              Figura 24. Arquivo config.inc.php
de acesso no arquivo “svnserve.conf”. Para detalhes de
integração do Subversion com o Mantis, consulte o site                                              terminologias e algumas ferramentas voltadas para dar
http://alt-tag.com/blog/archives/2006/11/integrating-                                               apoio à GCS.
mantis-and-subversion/.                                                                               Na sequencia, mostramos uma solução de boa qualidade e
                                                                                                    baixo custo que atende as exigências dos modelos de maturi­
Consideraçõs Finais                                                                                 dade e que pode ser facilmente implementada em empresas
 Neste artigo, vimos inicialmente os conceitos gerais de                                            de pequeno porte a fim de instalar as práticas de Gerência de
Gerencia de Configuração de software, suas principais                                               Configuração de Software. A solução foi mostrada através de


                                                                                                                          Edição 24 - Engenharia de Software Magazine   29
um estudo de caso em uma empresa fictícia, e fez uso das fer­                                         Dê seu feedback sobre esta edição!                                                               eu
                                                                                                                                                                                                          Feedback




                                                                                                                                                                                                   s
ramentas Mantis e Subversion para o controle de solicitação




                                                                                                                                                                                                Dê
                                                                                                     A Engenharia de Software Magazine tem que ser feita ao seu gosto.




                                                                                                                                                                                                                      sobre e
de modificações e controle de versões respectivamente.
                                                                                                     Para isso, precisamos saber o que você, leitor, acha da revista!
 Foram apresentados ainda aspectos de instalação das ferra­




                                                                                                                                                                                                                             s
                                                                                                                                                                                                          ta
                                                                                                                                                                                                             edição
                                                                                                     Dê seu voto sobre este artigo, através do link:
mentas e sua customização.
                                                                                                     www.devmedia.com.br/esmag/feedback


  Referências                                                                                        Links

 Barbosa, Valeria Plano de Gerência de Configuração de Software: Sistema de                          Collabnet “CollabNet Subversion Downloads”
 Controle de Custos 11/09/2007 disponível em http://conexao.googlecode.com/files/                    http://www.collab.net/downloads/subversion/
 SYSCOPlanoGerenciaConfiguracao.pdf
                                                                                                     Comunidade de Software & Inovação Empresarial “As Ferramentas de SCM e o Suporte
 Ben Collins-Sussman, de et al Version Control with Subversion: for Subversion 1.6 (Compiled         do CMM”
 from r3445) 2008 disponível em <http:subversion.tigris.org/>                                        http://paginas.ispgaya.pt/~msantos/es_artigos_tecnicos_1/60_FerramentasSCM_e_
                                                                                                     suporteCMM.pdf
 Borges, Vanessa R. Implantação de Práticas de Gerência de Configuração em uma Fábrica de
                                                                                                     DevMedia “Gerência de Configuração – Parte 1”
 Software: Um estudo de caso (Graduação em Ciência da Computação) Universidade Federal de
                                                                                                     http://www.devmedia.com.br/articles/viewcomp.asp?comp=9378
 Lavras, Minas Gerais, 2006
                                                                                                     EAI Community “Establishing a Configuration Management Baseline”
 Forte, G.,“Rally Round the Repository” CASE Outlook, Dez 1989, p. 5-27
                                      ,                                                              http://it.toolbox.com/blogs/enterprise-solutions/establishing-a-configuration-management-
                                                                                                     baseline-13910
 MOLINARI, Leonardo. Gerência de configuração: Técnicas e práticas no desenvolvimento do
 software. Florianópolis : Visual Books, 2007. 208p.                                                 Enciclopédia Livre, (2007) “Gerência de Configuração de Software”
                                                                                                     http://pt.wikipedia.org/wiki/Ger%C3%AAncia_de_Configura%C3%A7%C3%A3o_de_Software
 Neto, Euclides Plano de Gerência de configuração de software: Projeto VENSSO – Venda
 de Serviços de Software 27/05/2005 disponível em <http://vensso.sourceforge.net/doc/                Gerência de Configuração “Gerência de Configuração”
 VENSSO_SCM_20050527.pdf>                                                                            http://www.cin.ufpe.br/~gfn/qualidade/gc.html

 PRESSMAN, Roger S. Engenharia de software. 6ª. ed. São Paulo : McGraw-Hill, 2006. xxxi, 720p.       Mantis “Mantis Bug Tracker”
                                                                                                     http://www.mantisbt.org/
 SEI, Software Engineering Institute. CMMI for Development, Version 1.2: CMMI DEV V 1.2.
                                                                                                     Pronus Engenharia de Software “O que é Gerência de Configuração”
 Carnegie Mellon University, EUA, 2006 573p.
                                                                                                     http://www.pronus.eng.br/artigos_tutoriais/gerencia_configuracao/gerencia_configuracao.php
 SOFTEX MPS.BR - Melhoria de Processo do Software Brasileiro, Guia de Implementação – Parte 2:       Regularize “Gerência de Configuração de Software”
 Nível F, Rio de Janeiro, 2009 53p                                                                   http://cartilha.regularize.com.br/list/18/cartilha/post/80/gerencia-de-configuracao-de-software.html

 SOFTEX, MPS.BR - Melhoria de Processo do Software Brasileiro, Guia Geral Rio de Janeiro, 2009 57p   Tigris.org “Subversion”
                                                                                                     http://subversion.tigris.org/




30    Engenharia de Software Magazine - Gerência de Configuração
Engenharia                                                                                                                     processo


 Nesta seção você encontra artigos voltados para testes, processo,
 modelos, documentação, entre outros




 Medição de Software
 Um importante pilar da melhoria de processos de software


                                                                                                        De que se trata o artigo?
                                                                                                        Este artigo discute algumas questões relaciona-
                                                                                                        das à Medição de Software, principalmente no
                                                                                                        contexto da melhoria de processos de software.

                                                                                                        Para que serve?
                                                                                                        Fornecer conhecimento sobre Medição de Softwa-
                                                                                                        re para organizações, pesquisadores, estudantes e


                                                         O
                                                                  s avanços tecnológicos e a alta       profissionais de software.
                                                                  competitividade do mercado
                                                                  estão continuamente aumen­            Em que situação o tema é útil?
                                                         tando a demanda por softwares cada             Organizações de software que têm (ou planejam
                                                         vez melhores e que sejam produzidos            ter) a Medição de Software como uma de suas
                                                         em projetos aderentes aos custos e             práticas. Estudantes e profissionais de software
                                                         prazos planejados. Mesmo diante de             que buscam entendimento sobre o tema.
                                                         todos os avanços tecnológicos, realizar
                                                         projetos aderentes aos seus planos ain­
                                                         da é um desafio para grande parte das        A medição de software é considerada
        Monalessa Perini Barcellos                       organizações de software. Buscando         uma das atividades mais importantes
        monalessa@inf.ufes.br                            aprimorar suas práticas de Engenharia      para a gerência e melhoria de processos
        É Doutora em Ciências em Engenharia de
                                                         de Software e, consequentemente, desen­    e produtos de software, uma vez que
        Sistemas e Computação (COPPE/UFRJ), Mes-
        tre em Ciências em Engenharia de Sistemas        volver produtos de melhor qualidade em     fornece subsídios para a elaboração de
        e Computação (COPPE/UFRJ), Bacharel em           projetos conduzidos de acordo com seus     planos realistas para os projetos e possi­
        Ciência da Computação (UFES). Professora         planos, as organizações têm mostrado       bilita o monitoramento da aderência da
        do Departamento de Informática, área Enge-       um crescente interesse por programas       execução dos projetos em relação a seus
        nharia de Software, da Universidade Federal
                                                         de melhoria de processos, contexto no      planos (ISO/IEC, 2007). Isso é possível,
        do Espírito Santo (UFES). Atuante desde 1999
        em projetos, consultorias, treinamentos e pes-   qual a medição de software tem papel       pois as medidas, ao serem coletadas e
        quisas da área de Engenharia de Software.        fundamental.                               armazenadas, podem ser analisadas


                                                                                             Edição 24 - Engenharia de Software Magazine               31
através de métodos e fornecem informações importantes para         nos requisitos dos níveis iniciais dos modelos que tratam da
a tomada de decisão, envolvendo a identificação e realização       melhoria de processos em níveis. No CMMI (Capability Ma­
de ações corretivas e preventivas que orientem os projetos e       turity Model Integration), a medição encontra-se no nível 2
processos a alcançarem os objetivos para eles estabelecidos.       (área de processo Medição e Análise) e no MR MPS (Modelo de
  Resumindo: organizações de software que buscam a melhoria        Referência para Melhoria de Processo de Software Brasileiro)
de seus processos precisam realizar medição de software.           encontra-se no nível F (processo Medição).
  Considerando essa afirmação, neste artigo são discutidas
algumas questões relacionadas à medição de software e são          Medição de Software nas Organizações
apresentadas algumas propostas que apóiam a definição                Para que a medição de software seja eficientemente reali­
do processo de medição de software e sua realização nas            zada em uma organização, e dê o retorno necessário para
organizações.                                                      ser percebida como prática fundamental à sobrevivência e
  É importante destacar que o objetivo aqui não é “ensinar como    ao crescimento organizacional, sua implementação deve ser
realizar a medição”, e sim discutir questões relacionadas a esse   orientada para apoiar a tomada de decisão nos âmbitos técnico
contexto. Para isso, inicialmente são apresentados o conceito      e de negócios. Esse é o principal diferencial entre as organi­
e um breve histórico da medição de software. Em seguida, a         zações que se beneficiam com os resultados de seu programa
utilização da medição de software nas organizações é discu­        de medição e as organizações que simplesmente despendem
tida e, por fim, algumas propostas que apóiam a definição do       tempo e esforço para acumular dados inúteis.
processo de medição e sua execução são descritas.                    Organizações de software bem sucedidas geralmente imple­
                                                                   mentam a medição como parte de suas atividades, englobando
Conceito e Histórico                                               os níveis técnico, gerencial e estratégico. Nessas organizações, a
  Medição de software é uma avaliação quantitativa de qual­        medição provê a informação necessária às tomadas de decisão
quer aspecto dos processos e produtos da Engenharia de             que impactam no desempenho técnico e de negócio, sendo essa
Software, que permite seu melhor entendimento e, com isso,         informação disponibilizada para os tomadores de decisão em
auxilia o planejamento, controle e melhoria do que se produz       todos os níveis da organização, de acordo com seus objetivos.
e de como é produzido (BASS et al., 1999). O elemento básico         Um gerente de projetos pode, por exemplo, utilizar as informa­
da medição, que propicia a análise quantitativa, são as medi­      ções providas pela medição para realizar uma comunicação mais
das, as quais caracterizam, em termos quantitativos, alguma        eficiente, traçar os objetivos específicos dos projetos, identificar
propriedade de um objeto da Engenharia de Software.                e corrigir problemas antecipadamente, tomar decisões chave e
  O objetivo mais importante da aplicação da medição de sof­       justificar tais decisões. Mas é importante ressaltar que, assim
tware é prover informação quantitativa para apoiar a tomada        como qualquer outra ferramenta gerencial ou técnica, a medição
de decisões. Em outras palavras, as organizações de software       não é capaz de garantir o alcance dos objetivos. Entretanto, ela é
definem medidas e coletam dados que, ao serem analisados,          capaz de auxiliar os tomadores de decisão a terem uma aborda­
possam fornecer informações que sejam úteis à tomada de            gem pró-ativa às questões críticas inerentes aos projetos, o que
decisões, que envolve a análise do alcance aos objetivos esta­     contribui para que os objetivos sejam alcançados.
belecidos e identificação de ações corretivas e de melhoria.         Além de apoiar fortemente a tomada de decisão, a medição
  A medição de software começou a ser praticada na década de       auxilia e acelera o aprendizado organizacional, uma vez que
70, inicialmente apenas para medir o número de linhas de código    a análise dos dados coletados nos projetos provê a funda­
dos programas produzidos. Na década de 80, outras medidas –        ção necessária para o aprendizado através de cada projeto
relacionadas às fases finais do desenvolvimento – começaram        e, consequentemente, para o aprendizado organizacional.
a ser utilizadas, porém os objetivos da realização da medição      Também auxilia a organização a perceber e entender as
nas organizações não eram explícitos ou, se eram, não eram         diferenças entre o seu desempenho e o desempenho exigido
compreensíveis aos seus membros, resultando em medições            pelo mercado, permitindo que ela otimize seus processos
inúteis não alinhadas às necessidades das organizações ou dos      técnicos e de negócio, quando necessário. Isso é possível, pois
projetos. Nos anos 90, impulsionados por algumas aplicações        as medidas coletadas nos projetos da organização podem ser
bem sucedidas, foram desenvolvidos modelos para o processo         combinadas e, através da utilização de diferentes técnicas,
de medição baseados na melhoria de processos e nos princípios      analisadas para satisfazer as diferentes necessidades de in­
da qualidade total, fornecendo as diretrizes e a infraestrutura    formação organizacionais.
básicas para definir, coletar, validar e analisar medidas.           As organizações podem, ainda, utilizar as informações
  Atualmente, a medição de software é considerada um dos           providas pela medição para elaborar planos realistas para os
temas mais importantes na Engenharia de Software quando se         projetos, comparar o desempenho dos projetos correntes com
fala em melhoria de processos. Enquanto, no passado, muitas        seus planos, orientar os investimentos e decisões de melhoria
organizações de software não reconheciam a importância das         de processos e auxiliar a prever se os projetos em andamento
atividades de medição e as tratavam apenas como “mais uma          irão alcançar os objetivos inicialmente estabelecidos. Essas são
coisa a ser feita”, hoje ela é considerada uma prática básica da   ações comuns em organizações de software maduras, onde
Engenharia de Software, sendo evidenciada por sua inclusão         há utilização da medição em todo o ciclo de vida do software


32   Engenharia de Software Magazine - Medição de Software
processo



e as informações obtidas são consideradas e utilizadas como         que identifica as atividades do processo de medição que são
recurso estratégico na condução desse ciclo.                        requeridas para especificar que informações de medição
  Somente quando as informações obtidas na análise dos dados        são necessárias, como as medidas serão definidas, como os
coletados são utilizadas para direcionar as ações necessárias       dados serão coletados, como os resultados serão analisados
às organizações e seus projetos, é que o objetivo fundamental       e como avaliar se os resultados são válidos. O processo
da medição é alcançado e percebido pelas organizações, fator        de medição definido na ISO/IEC 15939 consiste de quatro
que contribui para a real institucionalização de um programa        atividades que são sequenciadas em um ciclo iterativo, per­
de medição eficiente.                                               mitindo feedback e melhoria contínua do processo. Ele é uma
  Uma vez que a medição de software é implantada e executada        adaptação do ciclo PDCA (Plan-Do-Check-Act), comumente
corretamente em uma organização, torna-se possível passar à         utilizado como base para a melhoria da qualidade. Suas ati­
melhoria de processos.                                              vidades são: (i) estabelecer e manter comprometimento com
  Melhoria de processos de software é uma abordagem para de­        a medição; (ii) planejar o processo de medição; (iii) executar
finição, organização e implementação de processos de software       o processo de medição; e, (iv) avaliar a medição.
que sejam eficientes para uma organização (KILPI, 2001).              O processo de medição proposto pela ISO/IEC 15939 é
  Implantar melhoria de processos em uma organização baseia-se      orientado às necessidades de informação da organização.
fundamentalmente na identificação e realização das mudanças         Para cada necessidade de informação, o processo gera um
que levam à melhoria dos processos. Para isso, inicialmente a       produto de informação, a fim de satisfazer a necessidade de
medição é utilizada para identificar as necessidades de mudanças.   informação identificada. Para isso, o processo considera um
Posteriormente, quando as mudanças são realizadas, a medição        Modelo de Informação de Medição, que estabelece a ligação
é utilizada para avaliar os resultados das alterações. Em outras    entre as medidas definidas e as necessidades de informação
palavras, a melhoria de processos é um ciclo contínuo no qual a     identificadas. A Figura 1 apresenta o Modelo de Informação
medição é um dos principais pilares.                                de Medição definido na ISO/IEC 15939.

Abordagens para Medição de Software
  Existem na literatura técnica algumas abordagens que
tratam a medição de software e apóiam a definição do
processo de medição, bem como sua execução. Algumas
dessas abordagens propõem processos para a realização
da medição, outras definem modelos de informação que
estabelecem a estrutura de informação considerada pela
medição e outras incluem propostas tanto para o processo
de medição quanto para o modelo de informação.
  O processo de medição pode ser definido como um conjun­
to de passos que deve orientar a realização da medição em
uma organização. Um processo de medição eficiente é fator
crítico ao sucesso da medição na organização, pois é ele que
direciona as atividades a serem realizadas para que, com
os resultados da análise dos dados coletados, seja possível
a identificação de tendências e antecipação aos problemas,
a fim de prover melhor controle dos custos, redução dos
riscos, melhoria da qualidade e, consequentemente, alcance
dos objetivos técnicos e de negócio (WANG e LI, 2005).              Figura 1. Modelo de Informação de Medição da ISO/IEC 15939
  Apesar das propostas existentes possuírem diferenças
entre si, percebe-se que, no âmbito do processo de medição,          De acordo com o Modelo de Informação de Medição, as ne­
as definições propostas consistem basicamente de quatro             cessidades de informação são atendidas por conceitos men­
etapas: (i) definição das medidas; (ii) coleta das medidas;         suráveis definidos em relação às entidades que podem ser
(iii) análise das medidas coletadas; e, (iv) utilização dos         medidas. Essas entidades possuem atributos aos quais são
resultados da análise em ações.                                     aplicados métodos de medição para obter medidas base que
  A seguir são apresentadas as principais abordagens de             são associadas através de funções de medição para compor
medição de software.                                                medidas derivadas1. Medidas são analisadas por modelos de
• ISO/IEC 15939 - Software Engineering – Software Mea-              análise e fornecem indicadores cuja interpretação representa
surement Process
  A norma ISO/IEC 15939 define uma das abordagens mais
conhecidas para o processo de medição. Segundo essa nor­            1 Medidas base são funcionalmente independentes de outras medidas,
                                                                    enquanto que medidas derivadas são definidas como função de duas ou mais
ma, um processo de medição é descrito como um modelo                medidas (ISO/IEC, 2002)


                                                                                    Edição 24 - Engenharia de Software Magazine        33
produtos de informação que atendem as necessidades de                   ser decompostos em subfatores que, por sua vez são, também,
informação inicialmente identificadas.                                  quantificados por medidas.
                                                                          Baseando-se no framework definido, o IEEE Std 1061-1998
• IEEE Std 1061-1998 – IEEE Standard for a Software Quality             propõe um processo de medição composto por cinco ativida­
Metrics Methodology                                                     des: (i) estabelecer os requisitos da qualidade de software; (ii)
  O IEEE Std 1061-1998 provê um framework para medidas de               identificar as medidas de qualidade de software; (iii) imple­
qualidade de software e um processo de medição de qualidade             mentar as medidas; (iv) analisar os resultados das medidas; e
de software para estabelecer requisitos de qualidade e iden­            (v) validar as medidas.
tificar, implementar, analisar e validar medidas de qualidade           • Practical Software Measurement – PSM
de processo e de produto.                                                 PSM é uma abordagem para medição de software orientada
  Na Figura 2 é apresentado o framework para medidas de qua­            às necessidades de informação organizacionais aderente
lidade de software definido no IEEE Std 1061-1998.                      à ISO/IEC 15939 e, como ela, possui dois componentes:
  No primeiro nível são estabelecidos os requisitos de qua­             um Modelo de Informação de Medição e um Processo de
lidade do sistema (representado na Figura 2 pelo item Qua­              Medição.
lidade de Software do Sistema) através da identificação de                O Modelo de Informação de Medição, assim como na ISO/
atributos de qualidade (por exemplo, Confiabilidade). Fatores           IEC 15939, tem como objetivo estabelecer a ligação entre as
de qualidade são, então, definidos para representar a visão             medidas definidas e as necessidades de informação iden­
dos atributos de qualidade segundo a gerência e o usuário.              tificadas. Para isso, como mostra a Figura 3, o modelo de
Para cada fator de qualidade é identificada uma medida para             informação representa a evolução de uma necessidade de
representá-lo quantitativamente. Por exemplo: o atributo de             informação até o Plano de Medição.
qualidade Confiabilidade pode ser representado pelo fator                 A partir das necessidades de informação, conceitos mensu­
de qualidade Tolerância a falhas, quantificado pela medida              ráveis, que indicam o que deve ser medido para atendê-las,
Tempo médio entre falhas. Se necessário, os fatores podem               devem ser identificados e modelados em um construtor de




             Figura 2. Framework para medidas de qualidade do IEEE Std 1061-1998




Figura 3. Modelo de Informação de Medição


34   Engenharia de Software Magazine - Medição de Software
processo



medição para estabelecer exatamente que medidas de que            alcance dos objetivos organizacionais. Uma das abordagens
atributos são necessárias. A partir daí, o mecanismo de           mais conhecidas é o Goal Question Metric - GQM que consi­
coleta e organização dos dados de uma ou várias instân­           dera que, para cada objetivo estabelecido, é possível determi­
cias do construtor de medição deve ser definido. O Plano          nar questões cujas respostas estão associadas a medidas. A
de Medição é o resultado formal que agrupa todos os itens         Figura 4 apresenta um exemplo para a relação de um obje­
anteriores.                                                       tivo de negócio, suas questões e medidas associadas.
  Sendo aderente à ISO/IEC 15939, a relação entre neces­            Após serem definidas, as medidas devem ser coletadas e
sidades de informação e conceito mensurável do Modelo             analisadas. O objetivo de analisar os dados das medidas é
de Informação do PSM equivale à relação entre esses itens         tornar qualquer padrão, tendência ou relacionamento mais
presente no Modelo de Informação de Medição da ISO/               visível, a fim de que estes possam auxiliar nos julgamen­
IEC 15939 (representado no lado esquerdo da Figura 1). O          tos necessários às tomadas de decisão. Durante a análise,
construtor de medição, por sua vez, inclui os demais itens        medidas que fornecem informações sobre o alcance dos
presentes no Modelo de Informação da ISO/IEC 15939 (de­           objetivos são transformadas em indicadores. Os indicadores
mais itens representados na Figura 1).                            são medidas base ou medidas derivadas que, associadas a
  Considerando o modelo de informação definido, o PSM             critérios de avaliação ou decisão pré-definidos, são capazes
propõe um processo de medição composto por quatro                 de fornecer informações que descrevem o alcance dos obje­
fases: (i) planejamento; (ii) execução; (iii) avaliação; e (iv)   tivos estabelecidos. São inicialmente definidos no Plano de
comprometimento.                                                  Medição, mas à medida que novas necessidades são identi­
                                                                  ficadas, novos indicadores devem ser definidos.
  Observando-se as primeiras etapas dos processos de                Em relação à análise dos dados coletados para as medidas,
medição propostos nas abordagens apresentadas, nota-se            é importante observar que, ao longo da execução de um
que elas são responsáveis pela identificação e definição das      processo de medição, o foco da análise muda de acordo com
medidas, bem como pela associação destas aos objetivos            a fase do ciclo de vida dos projetos nos quais a medição é
organizacionais. Essas etapas são de grande importância           aplicada. Tipicamente são considerados três tipos de análise:
para a medição, pois são elas que definem que informações         (i) análise de estimativas, utilizada principalmente no início
serão fornecidas para apoiar as tomadas de decisão.               do projeto, para apoiar o planejamento ou replanejamentos;
  Essa tarefa pode parecer simples, mas não é, principalmente     (ii) análise de viabilidade, utilizada quando o Plano do
em organizações de software. Para que as atividades de me­        Projeto está próximo de ser concluído, para determinar se
dição estejam alinhadas aos objetivos de negócio, é preciso       os planos e metas nele estabelecidos são realísticos e al­
identificar os fatores críticos que são capazes de determinar     cançáveis; e (iii) análise de desempenho, utilizada durante
se os objetivos de negócio serão ou não alcançados. Consi­        a execução do projeto para determinar se ele está indo ao
derando essa questão, há algumas abordagens que apóiam a          encontro dos planos e metas definidos. A Figura 5 ilustra
identificação e seleção de medidas adequadas à avaliação do       os três tipos de análise.




Figura 4. Exemplo de aplicação do GQM



                                                                                Edição 24 - Engenharia de Software Magazine   35
projetos. Também apóia a melhoria de processos no nível or­
                                                                ganizacional, fornecendo informações resultantes da análise
                                                                dos dados coletados ao longo dos projetos, que podem ser
                                                                utilizadas para orientar ações de melhoria nos processos.
                                                                 Neste artigo foram discutidos alguns aspectos relevantes
                                                                à aplicação da medição de software em organizações que
                                                                buscam a melhoria de processos, tendo sido enfatizada a
                                                                necessidade do alinhamento entre a medição e os objetivos
                                                                organizacionais.

                                                                  Dê seu feedback sobre esta edição!                                                            Feedback
                                                                                                                                                             eu




                                                                                                                                                         s
                                                                                                                                                      Dê
                                                                 A Engenharia de Software Magazine tem que ser feita ao seu gosto.




                                                                                                                                                                            sobre e
                                                                 Para isso, precisamos saber o que você, leitor, acha da revista!




                                                                                                                                                                                   s
                                                                                                                                                                ta
                                                                                                                                                                   edição
                                                                 Dê seu voto sobre este artigo, através do link:
                                                                 www.devmedia.com.br/esmag/feedback

                                                                  Referências
Figura 5. Tipos de análise                                       BASILI, V. R., ROMBACH, H. D., CALDIERA, G., 1994, Goal Question Metric Paradigm, Encyclopedia
                                                                 of Software Engineering, 2 Volume Set, John Wiley & Sons, Inc.
  No início de um projeto, é necessário estabelecer as es­
timativas para sua realização, principalmente as relacio­        BASS, L., BELADY, L., BROWN, A., FREEMAN, P., ISENSEE, S., KAZMAN, R., KRASNER, H., MUSA,
nadas a tempo, custo e esforço. Dados do projeto corrente        J., PFLEEGER, S., VREDENBURG, K., WASSERMAN, T., 1999, Constructing Superior Software,
e de projetos anteriores são utilizados para calcular essas      Software Quality Institute Series, Macmillan Technical Publishing.
estimativas. O Plano do Projeto é então elaborado. Quando        BRIMSON, J. A., 2004, Stop Cane Dancing and Integrate Statistical Process Control (SPC) into your
sua elaboração está em fase conclusiva, dados das medidas        Process Based Management System, Measurement Business Excellence, v. 8, n. 2, p. 15-22.
coletadas orientam a análise de viabilidade dos planos
estabelecidos, indicando os riscos envolvidos e fornecendo       CHRISSIS, M. B., KONRAD, M., SHRUM, S., 2006, CMMI (Second Edition): Guidelines for Process
diretrizes para que sejam traçadas outras alternativas, caso     Integration and Product Improvement, Addison-Wesley.
necessário. Quando o projeto é executado, é importante que       DEMING, W. E., 1986, Out of Crises, Massachusetts Institute of Technology, Center of Advanced
seu status seja conhecido, bem como seu desempenho em            Engineering, Cambridge.
relação aos planos estabelecidos e possíveis problemas re­
                                                                 ISO/IEC, 2007, ISO/IEC 15939 (E) Software Engineering - Software Measurement Process,
lacionados. A análise de desempenho é quem fornece essas
                                                                 International Organization for Standardization and the International Electrotechnical
informações, através da análise dos valores das medidas
                                                                 Commission, Geneva, Switzerland.
coletadas ao longo do projeto, e relacionamento destas com
os objetivos estabelecidos nos planos.                           KILPI, T., 2001, Implementing a Software Metrics Program at Nokia, IEEE Software, v. 18, n. 6,
                                                                 p. 72-77.
Considerações Finais                                             McGARRY, J., CARD, D., JONES, C., LAYMAN, B., CLARK, E., DEAN, J., HALL, F., 2002, Pratical Software
  Atualmente as organizações de software têm reconhecido a
                                                                 Measurement: Objetive Information for Decision Makers, Addison Wesley, Boston, USA.
necessidade de possuírem processos de software que sejam
capazes de atender às demandas de qualidade e produti­           NIESSINK, F., VLIET, H., 2001, Measurement Program Success Factors Revisited, Information and
vidade do mercado. Processos com essa característica são         Software technology, v. 43, n. 10, p. 617-628.
resultado da gerência eficiente dos processos e projetos, que    SOFTEX, 2009, MPS.BR: Melhoria de Processo do Software Brasileiro - Guia Geral : 2009,
leva à sua melhoria, contexto no qual a medição de software      Disponível em: http://www.softex.br/mpsbr.
é atividade primária.
  A medição apóia a melhoria no nível dos projetos, uma vez      WANG, Q., LI, M., 2005, Measuring and Improving Software Process in China, In Proceedings
que fornece a base necessária para a realização de planos        of International Symposium on Empirical Software Engineering - ISESE 2005, Hoosa Head,
realísticos e controle destes ao longo de sua execução nos       Australia, p. 183-192.




36    Engenharia de Software Magazine - Medição de Software
processo




Edição 24 - Engenharia de Software Magazine   37
Agilidade
     Nesta seção você encontra artigos voltados para as práticas e métodos ágeis.




 A Comunicação no Processo de Software
 O papel cada vez mais decisivo da comunicação no processo de software

                                                                                                   De que se trata o artigo?
                                                                                                   Neste artigo veremos o quanto o processo de
                                                                                                   software é permeado pelo processo de co-
                                                                                                   municação interpessoal. Não se trata de um
                                                                                                   processo apenas técnico, mas também social.
                                                                                                   Com o advento do paradigma de desenvolvi-
                                                                                                   mento rápido de software, destacamos o


                                                        O
                                                                 s avanços na área da tecnologia   papel cada vez mais decisivo da comunicação
                                                                 têm permitido ao longo dos        interpessoal com a utilização de métodos
                                                                 últimos anos grande informa­      ágeis no desenvolvimento de software.
                                                        tização nos processos das organizações.
                                                        No entanto, dispor de um sistema de        Para que serve?
                                                        software que atenda as diversas neces­     O artigo busca identificar meios de ameni-
                                                        sidades da gestão organizacional pode      zar as barreiras de comunicação na gestão
                                                        se tornar um processo complexo. Isso       de processos de software. Não se tem a
                                                        implica, muitas vezes, em desenvolver      pretensão de esgotar o assunto, mas propor
                                                        ou customizar um sistema. Mas não é só     uma reflexão acerca do tema, levantado por
                                                        isso: os sistemas de software precisam     diversos autores no campo da engenharia de
                                                        evoluir para acompanhar os modelos de      software.
                                                        gestão e, neste contexto passam obriga­
                                                        toriamente por manutenções que podem       Em que situação o tema é útil?
                                                        ser melhorias, otimizações e até mesmo     Na gestão e execução de processos de sof-
                                                        reparos. Segundo Pfleeger (2004), estas    tware que necessitam de constantes adapta-
                                                        manutenções abrangem qualquer alte­        ções e integrações. Neste contexto, a comu-
                                                        ração ou correção efetuada num sistema     nicação entre usuário e analista costuma ser
              Márcia Regina Simm Cantú                  que já está sendo utilizado, uma vez que   muito intensa, o que exige uma grande habi-
              macantu@bewnet.com.br
                                                        sua vida útil não acaba com a entrega. A   lidade de comunicação interpessoal, princi-
              Bacharel em Ciência da Computação; atua
              como analista de sistemas desde 2001.     grande maioria dos sistemas de softwa­     palmente por parte do analista de sistemas.
                                                        re deve ser construída para incorporar


38   Engenharia de Software Magazine - A Comunicação no Processo de Software
processo



mudanças: seja porque o usuário decidiu realizar seu processo       confirmação de recebimento, é Griffin (2006) quem destaca a etapa
de maneira diferente, seja porque houve alguma alteração de         de feedback no processo de comunicação. Trata-se de um retorno
leis ou normativas municipais, estaduais ou mesmo federais          com relação ao recebimento da mensagem: é a certeza de que o
que regulamentam os requisitos do sistema.                          receptor recebeu a mensagem e a compreendeu. Isso eliminaria
  Num processo de software, tanto no desenvolvimento de um          a ocorrência do ruído, tornando a comunicação eficaz.
sistema novo quanto na manutenção de um sistema existente, as         Apesar de parecer um processo simples, nem sempre, no en­
atividades relacionadas à etapa de levantamento de requisitos       tanto, a mensagem enviada é igual à mensagem recebida. Isso só
representam um papel fundamental exatamente por constituí­          ocorre porque o processo de comunicação é permeado ainda pelas
rem o alicerce para as fases subsequentes de desenvolvimento. O     características das pessoas envolvidas. De acordo com Chiavenato
levantamento de requisitos, de acordo com Sommerville (2007),       (1994), a comunicação é uma troca composta por palavras, letras
reflete as necessidades de um usuário e descrevem os serviços       ou símbolos e engloba pensamentos, opiniões ou informações.
que o sistema deve fornecer. Sendo assim, este não é um pro­        Neste sentido, o processo de comunicação é influenciado forte­
cesso apenas técnico, mas também social, uma vez que depende        mente pela subjetividade humana, independente do ambiente
fortemente de um entendimento entre os atores envolvidos, no        em que ocorre ou da forma como se dá.
caso, o analista de sistemas e o usuário. Para Pressman (2006), o     Do ponto de vista organizacional, segundo Griffin (2006), a
levantamento de requisitos é uma atividade com comunicação          comunicação tem o propósito de coordenar e orientar as metas
intensiva. O autor reforça a tese de que o ruído na comunicação     propostas. Isso só é possível com a troca de informações. Essa
entre usuário e analista pode acarretar muitas dificuldades para    troca permite o entendimento do que deve ser feito e como. Griffin
o desenvolvimento e/ou manutenção do sistema. Nesse sentido,        (2006, p.188) afirma ainda que: “A comunicação organizacional
é necessário estudar e compreender como ocorre o processo de        expressa sentimentos e emoções. Por isso está longe de ser uma
comunicação a fim de buscar maneiras de minimizar as barrei­        coleção de fatos e números. Os funcionários, como acontece em
ras da comunicação na gestão do processo de software.               qualquer lugar do mundo, precisam comunicar emoções como
                                                                    felicidade, raiva, desprazer, confiança e medo”.
O Processo de Comunicação                                             Para Chiavenato (1994), a comunicação nas organizações difi­
  De acordo com Reti (2008), vive-se em um mundo de lingua­         cilmente ocorre sem problemas. O autor chama a atenção para o
gens próprias. Pode-se falar o mesmo idioma, mas usam-se            fenômeno da transformação que ocorre no decorrer desse proces­
diferentes linguagens. Por isso, às vezes, não há um entendimen­    so, que faz com que o receptor receba uma mensagem diferente
to adequado. Em função de cada indivíduo ter características        daquela enviada pelo emissor. Essa transformação é provocada
intrínsecas, grande parte das dificuldades de entendimento vem      por três problemas principais, no entender do autor:
da forma como cada um interpreta os fatos e a comunicação.          • Omissão: supressão de conteúdo da mensagem;
Até as próprias palavras podem ter significado único para cada      • Distorção: alteração do conteúdo da mensagem;
uma das pessoas do processo de comunicação. A expressão no          • Sobrecarga: incapacidade de processar o volume de informa­
stress para o surfista é um tipo de onda ruim porque não tem        ções da mensagem, seja para o envio, seja para o recebimento
altura; para outros, significa “estar numa boa”.                    – provoca omissão e contribui para a distorção.
  O processo de comunicação é composto por cinco etapas, de
acordo com Chiavenato (1994):                                         Mas, além desses problemas que transformam o processo de
• Emissor ou fonte: é a pessoa, coisa ou processo que emite         comunicação, Chiavenato (1994) destaca ainda as barreiras da
a mensagem;                                                         comunicação, fatores que podem interferir nas etapas da comu­
• Transmissor ou codificador: elo que liga a fonte ao canal,        nicação comprometendo o resultado final da mensagem enviada.
equipamento que transporta a mensagem codificada;                   São exemplos de barreiras da comunicação: ideias preconcebidas,
• Canal: espaço entre transmissor e receptor por onde a men­        significados pessoais, emoções, estado de ânimo, entre outras.
sagem trafega;                                                        A especialização das pessoas nas organizações é, todavia, o
• Receptor ou decodificador: equipamento que recebe a               fator que mais influencia a comunicação no tocante ao processo
mensagem e a decodifica. Se a comunicação é oral, a recepção        de software. Apontada como uma barreira da comunicação
é garantida por meio de uma boa audição;                            por Megginson (1998), a especialização pode formar grupos
• Destino: é a pessoa, coisa ou processo para o qual a men­         com interesses, comportamentos e até mesmo vocabulário
sagem é enviada.                                                    próprios. Tome-se, por exemplo, uma das etapas mais críticas
                                                                    do Processo de software: o levantamento de requisitos. Imagine
  Existe ainda um elemento que deve ser acrescentado ao             o analista de sistemas interagindo com o usuário, cada qual
Processo de Comunicação: o ruído. O ruído é uma interferên­         sintonizado nos seus conhecimentos técnicos. Não vai haver
cia, um aspecto que prejudica a transmissão da mensagem e           entendimento, não vai haver comunicação.
distorce o seu significado. Estima-se que em todo o processo          Na concepção de Griffin (2006, p.192), a “comunicação é um
de comunicação exista ruído, em maior ou menor grau.                processo social em que duas ou mais partes trocam informações
  Embora Chiavenato (1994) afirme que a comunicação é um            ou compartilham significados. Trata-se de um processo de mão-
processo bidirecional e que necessita de um sinal de retroação ou   dupla e que acontece durante um certo tempo”.


                                                                                   Edição 24 - Engenharia de Software Magazine   39
Sendo assim, para que ocorra comunicação e se alcancem os                                              • Projeto: definição da estrutura de dados do sistema, sua arqui­
objetivos desta fase do processo de software, o usuário deve ser                                        tetura, detalhes procedimentais e caracterização da interface;
capaz de expressar suas necessidades numa linguagem que o                                               • Codificação: implementação do sistema em linguagem de
analista de sistemas entenda e o analista de sistemas deve ser                                          máquina;
capaz de externar para o usuário o que entendeu.                                                        • Teste: validação dos aspectos lógicos internos do software,
                                                                                                        bem como dos aspectos funcionais externos, a fim de garantir
O Processo de Software                                                                                  que o sistema atenda as especificidades;
  Para Sommerville (2007, p. 42), “um processo de software                                              • Manutenção: tratamento de erros encontrados e adaptação
é um conjunto de atividades que leva à produção de um                                                   para novas funcionalidades. É importante salientar que a ma­
produto de software”, no entanto, cada vez mais se aplica                                               nutenção de um sistema de informação reaplica cada uma das
o desenvolvimento de software para customizar sistemas                                                  etapas precedentes do ciclo de vida ao sistema existente.
existentes. A Figura 1 ilustra o paradigma do ciclo de vida
clássico da Engenharia de Software, conhecido também por                                                  De acordo com Pressman (2006), uma compreensão completa
“modelo em cascata”.                                                                                    dos requisitos do sistema de informação é fundamental para
                                                                                                        um bem-sucedido desenvolvimento de sistema. Não importa
     Análise
                                                                                                        quão bem projetado ou quão bem codificado seja, o sistema
                                                                                                        mal especificado não atenderá as necessidades do usuário
                    Requisitos                                                                          e trará aborrecimentos e retrabalho ao desenvolvedor. Essa
                                                                                                        constatação torna a etapa de levantamento de requisitos ex­
                                      Projeto                                                           tremamente crítica para o sucesso do processo de software.
                                                                                                          Como o levantamento de requisitos está relacionado com
                                                    Codificação                                         a definição do que o sistema deve fazer, para Sommerville
                                                                                                        (2007), esta etapa pode ser descrita como o processo de
                                                                        Teste                           comunicação entre usuário e analista e, nesse sentido, os
                                                                                                        requisitos podem ser influenciados pelas preferências, recu­
                                                                                   Manutenção           sas e preconceitos dos usuários, além de questões políticas
                                                                                                        e organizacionais. Essas diferenças de entendimento estão
Figura 1. Ciclo de vida clássico - Fonte: Pressman (2006, p. 33)                                        intimamente ligadas ao processo de comunicação, uma vez
                                                                                                        que a etapa de levantamento de requisitos decorre, basica­
 Nessa visão clássica, o desenvolvimento de software se dá                                              mente, da interação entre analista de sistemas e usuário. É
seguindo etapas predefinidas que não iniciam antes do tér­                                              importante salientar que essas preferências, recusas e pre­
mino da etapa anterior, muito embora, na prática, observe-se                                            conceitos podem surgir também por intermédio do próprio
que essas etapas se sobrepõem e trocam informações entre si.                                            analista de sistemas. Se, de um lado, o usuário afirma: “Não
Pressman (2006) conceitua as etapas do ciclo da vida como:                                              era bem isto que eu queria!”, em contrapartida, é muito co­
• Análise: definição dos serviços e objetivos do sistema;                                               mum ouvir um analista de sistemas se queixar: “O usuário
• Requisitos: descrição detalhada em linguagem natural                                                  não sabe o que quer!”.
do que o sistema deve fazer. Definem as funções, serviços e                                               A Tabela 1 lista alguns destes estereótipos mais comuns
restrições operacionais do sistema (deve definir exatamente                                             observados no relacionamento entre desenvolvedores de
o que será implementado);                                                                               sistemas e usuários.

                     Como os desenvolvedores vêem os usuários                                                             Como os usuários vêem os desenvolvedores
Os usuários não sabem o que querem.                                                          Os desenvolvedores não entendem as necessidades operacionais.
Os usuários não conseguem articular o que querem.                                            Os desenvolvedores dão muita ênfase ao aspecto técnico.
Os usuários têm muitas necessidades puramente políticas.                                     Os desenvolvedores tentam nos dizer como fazer nosso trabalho.
Os usuários querem tudo imediatamente.                                                       Os desenvolvedores não conseguem transformar as necessidades em um sistema bem-sucedido.
Os usuários não sabem priorizar as necessidades.                                             Os desenvolvedores dizem não o tempo todo.
Os usuários se recusam a se responsabilizar pelo sistema.                                    Os desenvolvedores estão sempre ultrapassando o orçamento.
Os usuários são incapazes de fornecer uma declaração aproveitável sobre suas necessidades.   Os desenvolvedores estão sempre atrasados.
Os usuários não estão comprometidos com os projetos de desenvolvimento de sistemas.          Os desenvolvedores pedem aos usuários que dediquem seu tempo e esforço, mesmo que em detrimento de
                                                                                             suas responsabilidades principais.
Os usuários não querem se comprometer.                                                       Os desenvolvedores definem padrões não-realistas para a definição de requisitos.
Os usuários não conseguem seguir o cronograma.                                               Os desenvolvedores são incapazes de responder rapidamente a legítimas necessidades de mudança.

Tabela 1. Como usuários e desenvolvedores vêem uns aos outros - Fonte: Pfleeger (2004, p. 142)


40     Engenharia de Software Magazine - A Comunicação no Processo de Software
processo



  A comunicação, neste contexto, fica bastante comprometida,        terminada a fase de levantamento de requisitos, o que pode
uma vez que esta relação social só pode se concretizar se hou­      comprometer todo o cronograma de um projeto.
ver respeito mútuo, que surge da aceitação do outro. De acordo        Num ambiente em que o desenvolvimento e a pronta entrega
com Maturana (2001), “sem a aceitação do outro na convivência,      são as principais premissas para um sistema, o ciclo de vida
não há fenômeno social”. O usuário não pode ser um problema         clássico talvez não seja a metodologia mais adequada, sendo
para o analista de sistemas: o usuário é a sua razão de ser.        considerada um tanto burocrática e pesada. Especialmente na
  Koscianski (2007) aponta ainda um dos problemas mais co­          década de 90, com a expansão da tecnologia nas pequenas e
nhecidos no processo de software: a negociação de requisitos        médias empresas, essa situação começou a se tornar inviável,
entre usuário e analistas. Como a entrevista é, provavelmente,      o que levou alguns desenvolvedores de sistema a estudarem
a técnica mais comum de levantamento de requisitos de siste­        métodos mais leves e rápidos. Mas foi em 2001 que alguns
mas, as dificuldades de comunicação durante a especificação         desenvolvedores, produtores e consultores de software assina­
de requisitos devem merecer atenção especial.                       ram o “Manifesto para o Desenvolvimento Ágil de Software”.
  A entrevista é composta por questões sobre o sistema for­         Este manifesto declarava a descoberta por melhores modos
muladas pelo analista de sistemas, derivando os requisitos          de desenvolvimento de software, baseados em indivíduos e
das respostas dadas pelos usuários a essas questões. Essas          suas interações, softwares funcionais, colaboração do cliente
entrevistas podem ser fechadas, respondendo os usuários             e resposta a modificações.
a perguntas predefinidas; ou abertas, que não seguem um
roteiro. As entrevistas abertas permitem uma compreensão            Desenvolvimento rápido de software, uma possível
maior acerca das necessidades do usuário, uma vez que o             solução?
usuário pode discorrer livremente sobre as suas atividades            Os métodos ágeis de software enfocam principalmente
de trabalho. Mas isso pode tornar o processo mais trabalhoso        a especificação, o projeto e a implementação de software.
para o analista, que necessita de um grande poder de síntese        São metodologias que envolvem o usuário em praticamente
para organizar essas informações de forma estruturada. Além         todas as fases do processo, garantindo assim que possíveis
disso, conforme Pressman (2006), frequentemente as informa­         mudanças nos requisitos possam ser corrigidas em tempo
ções fornecidas por um usuário se confundem ou entram em            real. O foco nessas metodologias é a comunicação interativa,
conflito com outras informações fornecidas por outros usuários      pois não existe uma única etapa em que usuário e analista
envolvidos. Isso exige, em muitos casos, a utilização de técnicas   interagem, mas várias. Nesse contexto os usuários podem
adicionais nesta fase de levantamento de requisitos.                vir a comunicar-se com toda a equipe de desenvolvimento,
  Sommerville (2007) sugere as técnicas de Cenários e Casos de      e não apenas com o analista, o que valoriza a cooperação
Uso. A técnica de Cenários caracteriza-se por uma descrição         entre usuários e desenvolvedores em detrimento do forte
de exemplos de interação do mundo real que o sistema deve           planejamento proposto pelo ciclo de vida clássico do processo
atender. A técnica de Casos de Uso baseia-se em cenários e          de software.
identifica o tipo de interação e quais agentes (sistema, usu­         Sommerville (2007) aponta a Extreme Programming como o
ário, etc.) estão envolvidos. Usualmente essas técnicas são         método ágil mais conhecido, citando ainda o Scrum, Crystal,
utilizadas em conjunto e podem fazer toda a diferença para          entre outros. Todos esses métodos possuem como característica
tornar a etapa de levantamento de requisitos mais eficaz. Não       comum o desenvolvimento iterativo, propondo, no entanto,
obstante, todas as técnicas resultam de alguma interação com        maneiras diferentes para o conseguir. Num desenvolvimento
o usuário. Assim, a comunicação é algo inerente à etapa de          iterativo, cada iteração é uma etapa do projeto de software.
levantamento de requisitos e precisa ser bem resolvida, a fim       Assim, com o foco na comunicação entre usuários e analista/
de que o produto final de software atenda às necessidades do        desenvolvedores, o projeto vai sendo validado e incrementado
usuário no prazo estipulado.                                        a cada etapa. É isso que garante que as mudanças no projeto
  Como o desenvolvimento do software decorre principalmen­          sejam bem-vindas e que o sistema seja entregue num prazo
te da etapa de levantamento de requisitos, é importante que         mais curto, de acordo com as necessidades do usuário. Um
este mapeamento seja bem construído. Dentre as vantagens da         envolvimento maior entre usuário e analista de sistemas pode
utilização do modelo de desenvolvimento de software baseado         gerar maior compreensão acerca dos requisitos do sistema e
no ciclo de vida clássico cita-se a documentação das etapas,        desfazer possíveis erros de interpretação. Além disso, a con­
o que gera maior consistência para as fases subsequentes.           vivência, por promover o companheirismo e a cooperação,
No entanto, Sommerville (2007) aponta a divisão inflexível          pode diminuir a distância técnica entre esses profissionais,
de etapas como uma grande desvantagem, tendo em vista a             quebrando barreiras e preconceitos, resultando num produto
dificuldade de reagir às mudanças inerentes do projeto. De­         que atende às necessidades do usuário e que proporcione
terminadas diferenças de entendimento sobre o que o sistema         maiores resultados à empresa.
deve contemplar podem ser descobertas apenas na etapa final           O que fica evidente, no tocante à comunicação, é que o grande
de teste, o que obriga o retorno às fases iniciais de análise e     trunfo dos métodos ágeis se dá pelo envolvimento do usuário
levantamento de requisitos para readequações, alerta o autor.       em todo o processo de software, e não apenas numa fase ini­
Verdadeiramente, podem ocorrer mudanças antes mesmo de              cial, a exemplo da metodologia do ciclo de vida clássico. No


                                                                                  Edição 24 - Engenharia de Software Magazine   41
entanto, é importante ressaltar que essa interação maior com          seja o maior aliado no processo de software, uma vez que
o usuário não garante a superação das barreiras de comuni­            permite que tanto o usuário quanto o analista de sistemas
cação, podendo até mesmo agravá-las. Falhas e barreiras na            saiba se o que disseram um ao outro foi compreendido.
comunicação podem fazer-se presentes em qualquer momento                Todas essas premissas não se constituem numa lista de pré-
de interação. Além disso, caso o escopo não tenha sido bem            requisitos básicos para garantir a eficácia da comunicação
especificado, corre-se o risco de não ter um sistema pronto           num processo de software, mas podem servir como base na
nunca, uma vez que a cada iteração o usuário pode rever os            busca da superação das suas barreiras. E para isso não faz
requisitos e propor mudanças.                                         diferença a utilização de métodos ágeis ou a metodologia
  Mas não é necessário escolher entre os métodos ágeis e o ciclo      de ciclo de vida clássico: aumentar a interação com usuários
de vida clássico. A agilidade não abstrai disciplina e processo       pode significar aumentar as barreiras de comunicação, caso
no desenvolvimento de software. Sendo assim, uma alternativa          o processo de comunicação entre usuário e analistas de sis­
é considerar um modelo híbrido de processo de software que            temas não seja eficaz.
contemple certo planejamento, de acordo com o modelo de                 Nesse sentido, é imprescindível que toda e qualquer inte­
ciclo de vida clássico, aliado à intensificação do envolvimento       ração entre usuário e analista de sistemas prime pela clareza
do usuário, proposto pelos métodos ágeis.                             na comunicação, focada no respeito mútuo e aliada, princi­
  É importante ainda salientar que a escolha do método a ser          palmente, à prática do feedback, independente do modelo de
utilizado no processo de software vai depender do tipo de             desenvolvimento de software adotado.
sistema a ser desenvolvido. Os métodos ágeis são perfeitos
para pequenos sistemas ou pequenas adaptações e integrações
                                                                         Dê seu feedback sobre esta edição!                                                           Feedback
entre diferentes sistemas, no entanto, não se aplicam a siste­                                                                                                     eu




                                                                                                                                                               s
                                                                                                                                                            Dê
mas complexos e críticos, nos quais são necessárias análises            A Engenharia de Software Magazine tem que ser feita ao seu gosto.




                                                                                                                                                                                  sobre e
detalhadas de requisitos e maior planejamento.                          Para isso, precisamos saber o que você, leitor, acha da revista!




                                                                                                                                                                                         s
                                                                                                                                                                      ta
                                                                                                                                                                         edição
                                                                        Dê seu voto sobre este artigo, através do link:
Conclusões                                                              www.devmedia.com.br/esmag/feedback
  Para Pressman (2006), cabe ao analista de sistemas o papel
de facilitador no processo de software, quando elenca algu­
mas capacidades básicas que este deve possuir e que podem               Referências Bibliográficas
se resumir na habilidade de comunicar-se, de entender e se              CHIAVENATO, Idalberto. Gerenciando pessoas: o passo decisivo para a administração
fazer entender. Griffin (2006), no entanto, enxerga cada ele­           participativa. São Paulo: Makron Books, 1994.
mento do processo de comunicação como parte fundamental:
                                                                        GRIFFIN, Ricky W.; MOORHEAD, Gregory. Fundamentos do comportamento organizacional. São
se um deles falhar, a mensagem pode não ser transmitida
                                                                        Paulo: Ática, 2006.
adequadamente.
  Por isso, para viabilizar a comunicação organizacional, é             KOSCIANSKI, André; SOARES, Michel dos Santos. Qualidade de software. São Paulo: Novatec, 2007.
importante que todas as pessoas envolvidas no processo de
                                                                        MATURANA, Humberto. Emoções e linguagem na educação e na política. Belo Horizonte: UFMG,
software, desde usuários até analistas e desenvolvedores,
                                                                        2001.
conheçam o processo de comunicação, seu funcionamento e
suas técnicas. Habilidades de ouvir, falar e valorizar a pessoa         MEGGINSON, Leon C.; MOSLEY, Donald C.; PIETRI Jr., Paul H. Administração: conceito e aplicação.
com quem se comunica são importantes e devem ser promo­                 São Paulo: Harbra, 1998.
vidas. Além disso, deve-se procurar evitar os pré-julgamentos           PFLEEGER, Shari Lawrence. Engenharia de Software. São Paulo: Prentice Hall, 2004.
decorrentes de mitos e preconceitos. Eles podem interferir
                                                                        PRESSMAN, Roger S. Engenharia de software. São Paulo: McGraw-Hill, 2006.
fortemente nos relacionamentos interpessoais, causando os
indesejáveis ruídos na comunicação.                                     RETI, Andréa Huggard-Caine. O segredo de cuidar das pessoas: experiências do cotidiano para
  Outro aspecto do processo de comunicação que deve ser                 gerenciar melhor e aumentar o desempenho das equipes. Rio de janeiro: Elsevier, 2008.
amplamente encorajado é o feedback, por constituir-se numa
                                                                        SOMMERVILLE, Ian. Engenharia de software. São Paulo: Pearson Addison-Wesley, 2007.
maneira de checar a compreensão das mensagens. Esse talvez




42   Engenharia de Software Magazine - A Comunicação no Processo de Software
Planejamento e Gerência
 Nesta seção você encontra artigos voltados para o planejamento
 e gerência de seus projetos de software




 Análise Quantitativa de Riscos e suas Técnicas

      Marcio Souza                                                     Hermano Perrelli                                   De que se trata o artigo?
      mms3@cin.ufpe.br                                                 hermano@cin.ufpe.br
                                                                                                                          Este artigo traz o aprofundamento na Gerência
      Líder de Equipes de desenvolvimento de software                  Atualmente é professor Adjunto e Vice-Diretor
      no Centro de Estudos e Sistemas Avançados do Re-                 do Centro de Informática da Universidade Fe-       de Riscos, detalhando a Análise Quantitativa de
      cife (C.E.S.A.R). Mestre em Ciência da Computação                deral de Pernambuco. Consultor e instrutor da      Riscos e suas principais técnicas, de acordo com a
      pela Universidade Federal de Pernambuco e Gra-                   Qualiti Software Processes. Certificado PMP        recomendação do Guia PMBOK, e mostra o resul-
      duado em Informática pela Universidade Católica                  (Project Management Professional) pelo PMI.        tado de um estudo comparativo destas técnicas.
      do Salvador. É membro dos grupos de pesquisa na                  PhD In Computing Science pela University of
      área de gerenciamento de projetos e engenharia                   Glasgow, Mestre em Informática pela Univer-
      de software, GP2 Project Management Research                     sidade Federal de Pernambuco e graduado            Para que serve?
      Group e PROMISE (Project Management Improve-                     em Engenharia Eletrônica pela Universidade         Analisar as decisões chaves na presença de incer-
      ments in Software Engineering).                                  Federal de Pernambuco.                             tezas; alertar, principalmente, os envolvidos de
      Cristine Gusmão                                                                                                     um projeto sobre riscos importantes antes de suas
                                                                                                                          ocorrências; e, traduzir os riscos em números.


                                                            A
      cristine.gusmao@nutes.ufpe.br
      Graduada em Engenharia Elétrica (1993), mestrado               Análise Quantitativa de Riscos
      (2001) e doutorado (2007) em Ciência da Compu-                 (AQR) é um campo relativa­                           Em que situação o tema é útil?
      tação pela Universidade Federal de Pernambuco.                 mente novo, o qual tem cres­
      Professora adjunta da Universidade Federal de Per-
                                                                                                                          Auxiliar os envolvidos em um projeto, mais
                                                            cido rapidamente em diversas áreas do                         especificamente, o gestor de projetos, no
      nambuco, com atividades na graduação e pós-gra-
      duação, lotada no Núcleo de Telessaúde, pesquisa-
                                                            conhecimento [Vose 2002]. Uma dessas                          processo de tomada de decisão.
      dora colaboradora do Grupo GP2 do Centro de Infor-    áreas tem sido o gerenciamento de
      mática (CIn - UFPE), coordenadora e pesquisadora      projetos, cujas diversas abordagens dis­
      do PROMISE (Project Management Improvements           poníveis consideram a análise de riscos
      in Software Engineering) e colaboradora do Progra-    como um dos seus principais processos                      conduzi-la após a avaliação dos riscos,
      ma de Mestrado em Engenharia de Computação da
      Escola Politécnica de Pernambuco - Universidade de
                                                            no contexto da gerência de riscos de um                    incluindo a priorização dos mesmos, e
      Pernambuco (POLI - UPE). É membro da SBC. Tem         projeto [Matias Júnior 2006].                              garantir que todos os principais riscos
      experiência na área de Ciência da Computação,           A discussão sobre a análise quanti­                      poderão ser considerados.
      com ênfase em Engenharia de Software, atuando         tativa de riscos presume que etapas                          Segundo David Hulett [Hulett 2004], a
      principalmente nos seguintes temas: Gerência de       anteriores, tais como planejamento e                       análise quantitativa de riscos é sempre
      Riscos de Projetos, Qualidade de Software, Gerência
      de Projetos, Gestão de Sistemas de Saúde, e-Health
                                                            identificação de riscos, tenham sido                       recomendada para projetos grandes,
      e Consultoria em Processos de Negócio.                cumpridas. Desta forma, é melhor                           complexos ou visíveis, podendo ser


                                                                                                                Edição 24 - Engenharia de Software Magazine               43
adaptada para projetos menores sempre que necessário. Desta               de Monte Carlo é um método antigo, com mais de cinquenta
forma, ela é tipicamente executada para examinar a viabilidade            (50) anos, que combina as distribuições baseadas nos relacio­
de custos e de prazo de um projeto, ou seja, analisar as decisões         namentos dos modelos, armazenando os resultados para serem
chaves na presença de incertezas.                                         mostrados posteriormente. As saídas são sempre mostradas
  Neste cenário, a AQR provê respostas a três questões que não            graficamente, porém outras formas incluem listas de elemen­
podem ser respondidas através de metodologias de gerencia­                tos de custos, que contêm o maior risco (maior contribuição
mento de projetos determinísticas, tais como estimativa de                para a contingência em relação ao custo total), ou atividades
custo tradicional ou planejamento de projeto:                             de tempo (atividades nos caminhos críticos, considerando o
• Qual a probabilidade de alcançar o objetivo do projeto, dados           maior número de iterações durante a simulação).
todos os riscos conhecidos e quantificados?                                 Adicionalmente, a AQR inclui a Análise por Árvore de
• De quanto pode ser o atraso e quão necessária é a contingên­            Decisão, a qual melhora a capacidade da organização de to­
cia para o nível de certeza desejado pela organização?                    mar a decisão correta quando as implicações das diferentes
• Onde está o maior risco, considerando o modelo do projeto e             decisões não podem ser preditas com certeza. A análise por
a totalidade de todos os riscos identificados e quantificados?            árvore de decisão envolve: especificação de todos os fatores
                                                                          e as implicações de uma decisão, os custos e benefícios de to­
  A análise qualitativa de riscos, uma das principais partes              mar determinada decisão e as probabilidades associadas com
da avaliação de riscos, responde à última pergunta, mas não               cenários incertos ou resultados que tenham um impacto na
pode estimar o total de risco do projeto, haja vista que cada             decisão e os seus resultados. A análise por árvore de decisão,
risco é examinado por vez [Hullet 2004]. Então, a contribuição            então, computa o valor monetário esperado (custo ou lucro)
da Análise Quantitativa de Riscos é avaliar, simultaneamente,             ou a utilidade esperada para a organização das alternativas
todos os riscos do projeto em relação ao seu custo total, ou a            disponíveis. A parte interessada utiliza os resultados para
sua data final, bem como aos seus principais marcos.                      tomar decisões quando a incerteza está presente.
  A AQR tem como objetivo global alertar ao gerente, cliente                A Análise Quantitativa de Riscos, através de suas técnicas,
ou patrocinador do projeto a respeito de dois pontos princi­              avalia numericamente o efeito dos riscos identificados nos
pais: (1) se os objetivos gerais do projeto estão suficientemente         objetivos gerais do projeto [PMI 2004]. Então, na próxima
em perigo para justificar o tratamento dos riscos, e (2) sobre            seção serão discutidas as principais técnicas utilizadas no
riscos importantes antes das suas ocorrências, o que lhes per­            tratamento dos riscos.
mite desenvolver ações de mitigação de risco ou captura de
oportunidades para tornar o projeto melhor. Uma dificuldade               As Técnicas
na concretização deste objetivo ocorre porque, no início do                 As técnicas quantitativas de análise de riscos traduzem, ma­
projeto, quando se pode tirar vantagem do tratamento dos                  tematicamente ou computacionalmente, o risco em números.
riscos, os dados sobre o risco e, em particular, os modelos               Essas técnicas sempre provêem probabilidades numéricas ou
necessários para a análise quantitativa dos riscos não estão              as consequências e o comportamento dos riscos identificados.
disponíveis. Quando as estimativas de custos e prazos estão               Os valores utilizados nessas técnicas são obtidos de bases de
mais amadurecidas, e os dados mais conhecidos, a flexibili­               dados históricas ou são estimativas de esforço. No último
dade e o poder de afetar o projeto com alternativas tornam-se             caso, contêm um nível de incerteza devido ao possível uso
restritos, pois mais decisões têm de ser tomadas. Em algum                de subjetividade relacionado aos valores [Baker et al. 1998;
ponto, durante a execução do projeto, o objetivo principal da             Padayachee 2001].
análise quantitativa dos riscos é fornecer estimativas precisas             Nesse cenário, as técnicas mais comumente empregadas para
de onde o projeto resultará.                                              a AQR e destacadas na literatura são: Entrevistas, Análise de
  Ainda de acordo com David Hulett [Hulett 2004], as principais           Sensibilidade, Análise do Valor Monetário Esperado, Análise
entradas para a AQR são as distribuições de probabilidade dos             da Árvore de Decisão e Simulação de Monte Carlo [Hulett 2004;
custos ou das durações da atividade (prazo). As distribuições             PMI 2004; Almeida e Ferreira 2008].
da probabilidade são usualmente distribuições contínuas de
valores possíveis do elemento custo ou do prazo, desenvolvida             Entrevistas
através de entrevistas intensivas e análise de desempenhos                  As entrevistas são realizadas, conforme Newton Nóbrega
passados. A entrada típica é resultado do uso da estimativa               [Nóbrega 2007], de maneira análoga àquelas que compõem
de 3-pontos, no qual o custo ou a duração é representado pelo             os métodos de identificação de riscos, tendo como principal
valor mais otimista (mais baixo, melhor), o valor mais prová­             diferença a recomendação de se buscar, na fase de identifica­
vel para este projeto, e o valor pessimista (mais alto, pior). As         ção, dados qualitativos e quantitativos para os riscos. Já na
distribuições mais comumente usadas são a: triangular, beta,              quantificação dos riscos, as entrevistas são realizadas com o
uniforme, normal ou outros tipos de distribuições.                        objetivo de se quantificar a probabilidade e as conseqüências
  O método mais frequentemente usado na Análise Quanti­                   dos riscos sobre os resultados do projeto.
tativa de Riscos é a simulação de Monte Carlo do modelo de                  O Project Management Institute [PMI 2004] destaca que a
custo ou prazo [Hulett 2004; Matias Júnior 2006]. A simulação             informação necessária vai depender do tipo de distribuição


44   Engenharia de Software Magazine - Análise Quantitativa de Riscos e suas Técnicas
Planejamento



de probabilidades que é usado. Se for utilizada a distribuição    detalhes, da seguinte maneira: impacto em relação ao cus­
uniforme, devem ser colhidas informações sobre o valor má­        to (Ic), impacto em relação ao empenho (Ie) e impacto em
ximo e mínimo para uma consequência de um evento de risco,        relação ao cronograma (Icr).
tal como citado anteriormente. No caso de uma distribuição          Usando esta técnica para todos os riscos, ter-se-á uma análise
triangular, seriam necessárias informações sobre o cenário        para apresentar aos stakeholders do projeto e, consequentemen­
otimista, pessimista e aquele mais provável. As distribuições     te, poderá ser requerida uma reserva de contingência para
representam as probabilidades e as consequências do compo­        cobrir o impacto dos riscos, caso algum destes aconteça. John
nente do projeto.                                                 Grass [Grass 2007] exemplifica essa situação (vide Tabela 1),
  Por fim, a documentação do raciocínio (da análise lógica) por   conforme explanado posteriormente.
detrás das extensões dos riscos é um componente importante
da entrevista sobre riscos, uma vez que pode gerar estratégias                Probabilidade de Impacto em termos de   Reserva de Contingência
                                                                      Risco
eficazes de respostas aos riscos.                                              Ocorrência (Pr)         custo (Ic)            para o Risco
                                                                  A           80%              R$ 10.000,00         R$ 8.000,00
Análise de Sensibilidade                                          B           30%              R$ 30.000,00          R$ 9.000,00
  A Análise de Sensibilidade é uma técnica utilizada para         C           50%              R$ 8.000,00           R$ 4.000,00
tomada de decisão que avalia a mudança de uma variável            D           10%              R$ 40.000,00          R$ 4.000,00
dentro do projeto, analisando o resultado dessa variação sobre
                                                                  E           30%              R$ 20.000,00          R$ 6.000,00
o seu planejamento inicial, e é de grande importância para a
                                                                  F           25%              R$ 10.000,00          R$ 2.500,00
análise de novos cenários [Silva e Belderrain 2004; Almeida e
Ferreira 2008].                                                   Total                        R$ 118.000,00         R$ 33.500,00
  Esta técnica ajuda a determinar quais riscos apresentam         Tabela 1. Representação da técnica VME [Grass 2007]
maior impacto potencial no projeto, examinando a extensão
com que a incerteza de cada elemento do projeto afeta o             Supondo a identificação de seis riscos no projeto, o impacto
objetivo que está sendo examinado quando todos os outros          potencial é de cento e dezoito mil reais (R$ 118.000,00). Entre­
elementos incertos são mantidos em seus valores de linha          tanto, não se pode solicitar toda essa quantia como reserva
de base, impactando em prazos e custos [PMI 2004; Almeida         de contingência, pois este nível de reserva seria considerado
e Ferreira 2008]. Desta forma, a aplicabilidade da análise de     para o caso de todos os riscos ocorrerem. Por isso, a reserva de
sensibilidade é caracterizada tanto na gestão de prazos quanto    contingência é respeitada avaliando o potencial do impacto dos
no retorno sobre o investimento.                                  riscos no projeto e a probabilidade dos mesmos acontecerem,
  De uma maneira geral, utiliza-se a análise de sensibilidade     sendo evidenciada na última coluna da Tabela 1.
para tomar melhores decisões, decidir quais dados estimados         Percebe-se que a solicitação total da reserva de contingência é
devem ser refinados antes de iniciar o processo de tomada         de trinta e três mil e quinhentos reais (R$ 33.500,00), podendo
de decisão e concentrar-se nos elementos críticos durante a       ser adicionada ao orçamento do projeto como uma poupança
sua implantação. Por outro lado, o principal obstáculo é a não    referente aos riscos. Se o risco “C” e o “F” ocorrerem, parte
indicação da possível ocorrência de variação dos parâmetros       dessa reserva poderá ser usada para cobrir o impacto. Porém, a
escolhidos na modificação da variável em análise, bem como        ocorrência do risco “D” impactará na reserva de contingência,
considerar cada variável como sendo independente.                 podendo não ser o suficiente para proteger o projeto e cobrir
                                                                  o impacto. Mesmo o risco “D” tendo apenas 10% de chance de
Análise do Valor Monetário Esperado                               incidência, a equipe do projeto tem a obrigação de focar nesse
  O Valor Monetário Esperado (VME) é uma prática de gerên­        risco para assegurar que o mesmo seja gerenciado com sucesso,
cia de riscos utilizada para ajudar a quantificar e comparar      ou seja, a equipe deve procurar minimizar o impacto através
os riscos em vários aspectos de um projeto. Tal como outras       de um gerenciamento pró-ativo do risco.
técnicas de análise quantitativa de riscos, o VME se baseia         No caso do gerenciamento de projetos médios e grandes, faz
em números específicos e quantificáveis para a realização de      sentido incluir algum tempo e orçamento para riscos desco­
cálculos ao invés de aproximações e subjetivações, tais como:     nhecidos. De acordo com John Grass [Grass 2007], existe uma
alto, médio e baixo.                                              comprovação na indústria de que uma reserva de contingência
  Nessa linha, o VME é fundamentado em três números               de 5% pode ser adicionada ao projeto para tratar dos riscos que
básicos. São eles: probabilidade do risco ocorrer (Pr), pro­      são desconhecidos no início do projeto.
babilidade do risco impactar o projeto se o mesmo ocorrer
(PI) e impacto no projeto se o risco ocorrer (I). Em relação      Análise da Árvore de Decisão
à variável PI, normalmente a maioria dos projetos não              A Árvore de Decisão consiste na determinação e visualização
utilizam este componente de cálculo, pois se supõe que os         gráfica de caminhos que poderão ser seguidos em um pro­
riscos identificados terão a probabilidade de 100%, ou um         cesso de tomada de decisão [Pedro e Guerreiro 2004; Almeida
valor bem perto de impactar o projeto. Quanto ao elemento         e Ferreira 2008]. Essa técnica é estudada em vários campos
impacto (I), o mesmo pode ser reclassificado, em maiores          de pesquisa como ciências sociais, estatística, engenharia e


                                                                                     Edição 24 - Engenharia de Software Magazine          45
inteligência artificial, e aplicada desde o diagnóstico de casos          combinação escolha/probabilidade, representando os níveis
médicos até avaliação de riscos na área financeira.                       ao extremo de cada nó.
  Segundo Raphael D’Castro [D’Castro 2009], como técnica
de computação inteligente e apresentando resultados extra­                  Na construção de uma árvore de decisão, considerando os
ordinários na tarefa de classificação, a análise da árvore de             principais elementos defendidos por David Hillson, é plausível
decisão é um candidato natural para auxiliar nos obstáculos               fazer uma avaliação para determinar a escolha mais adequada,
encontrados na gerência de riscos.                                        ponderando custos, probabilidades e consequências associa­
  Na sua forma estrutural, Cliff Ragsdale diz que a árvore de             dos, baseando-se na seguinte lógica: caminha-se pela árvore de
decisão compõe-se de nós (concebidos por círculos e quadrados             decisão, analisando cada percurso lógico alternativo; calcula-
representando, respectivamente, eventos aleatórios e decisões)            se seu valor acumulando custos e benefícios do início ao fim;
interconectados por ramos (representados por linhas), sendo               utiliza-se este conjunto de valores e verifica-se o retorno de
que os ramos originados do nó de decisão mostram as diferen­              cada caminho lógico alternativo, obtendo o valor esperado de
tes alternativas para uma decisão particular [Ragsdale 2001],             cada escolha (sempre ponderando as consequências quando as
conforme ilustrado na Figura 1.                                           probabilidades ocorrerem); por fim, o nó possuidor do valor
                                                                          esperado mais alto, será a opção de decisão recomendada.
                                                                            A existência de alguns obstáculos na utilização das árvores
                                                                          de decisão merece ser citada. São eles: limitação prática da
                                                                          técnica (análise de um baixo número de opções de decisão e
                                                                          riscos possíveis); amplo modelo sem grande utilidade (tentativa
                                                                          de demonstrar em uma única árvore, um projeto que envolve
                                                                          muitas decisões em distintos níveis, associados a uma infini­
                                                                          dade de riscos); e, necessidade de imparcialidade da pessoa
                                                                          responsável por tomar a decisão fundamentada no valor espe­
                                                                          rado mais alto [Gama 2002; Hillson 2005; D’Castro 2009].
                                                                            Apesar das limitações citadas anteriormente, as principais
                                                                          vantagens da técnica de árvore de decisão são a simplicidade,
                                                                          facilidade de interpretação, flexibilidade e ser um método
Figura 1. Exemplificação de uma árvore de decisão [Ragsdale 2001]         não-paramétrico (não assume nenhuma distribuição parti­
                                                                          cular para os dados e pode construir modelos para qualquer
  De uma maneira geral, os ramos da árvore correspondem a                 função, desde que o número de exemplos de treino seja sufi­
cada possibilidade lógica que leva à próxima possibilidade ou             ciente) [Gama 2002; Clarke e Bittencourt 2003; Hillson 2005;
ação a ser tomada. Nem sempre a combinação das condições                  Almeida e Ferreira 2008].
descritas leva a uma ação definitiva. Quando isto ocorre, o
decisor tem o papel de optar pela melhor ação a ser tomada.               Simulação de Monte Carlo
  As folhas, situadas no final dos ramos, exibem os caminhos                O método de Monte Carlo é uma das técnicas do processo
aos quais uma decisão pode levar. Essas folhas terminais são              de Análise Quantitativa de Riscos, sendo recomendado para a
representadas, normalmente, por traços verticais, indicando               análise de riscos de cronograma e de custos [Galvão 2005]. Seu
ponto final, ou por triângulos.                                           algoritmo é um processo de simulação que é repetido várias
  Neste panorama, David Hillson afirma que a análise da árvore            vezes, sendo gerados, em cada iteração, possíveis valores para
de decisão baseia-se em quatro elementos fundamentais: esco­              as durações das atividades [Lima et al. 2008]. Desta forma, a
lha, probabilidade, custos e consequências [Hillson 2005]:                rede do projeto é montada baseada nesses valores, obtendo
• Escolha: primeiro passo na construção da árvore de deci­                uma aceitável data final do projeto.
são. Identifica as opções a serem escolhidas para alcançar os               Adiciona-se a isto que, na análise de cronograma é utilizado
objetivos, sendo que essas escolhas definem os nós de decisão             o Método de Diagrama de Precedência (PDM) e, na análise de
da árvore.                                                                custos, emprega-se a Estrutura Analítica de Trabalho (EAP)
• Probabilidade: na existência de incerteza, deve-se identificar          [Nóbrega 2007]. A EAP é uma maneira de decompor o projeto
e avaliar a probabilidade estimada de cada resultado, por ser             em componentes facilmente gerenciáveis. Desta forma, o proje­
uma importante variável associada com os diversos caminhos                to acaba transformado em grupos principais de trabalho, onde
de decisões diferentes.                                                   esses são reduzidos a tarefas, subtarefas, e assim sucessivamen­
• Custos: fator mais simples associado às escolhas alternativas. Ao       te, até que se chegue num nível de granularidade necessária e
se fazer uma escolha, sempre existe um custo relacionado e uma            entendível para finalizar um projeto específico.
estimativa deve ser incluída em cada nó da árvore de decisão.               O nome Monte Carlo surgiu no decorrer do projeto Manhat­
• Consequências: resultado da implementação de uma decisão,               tan, na Segunda Guerra Mundial, devido ao fato da cidade
considerando seus custos e riscos. Desta forma, a estrutura da            de Monte Carlo, capital de Mônaco, local de famosos cassi­
árvore de decisão apresenta o resultado presumido de cada                 nos, ser uma importante referência em jogos de azar e cujo


46   Engenharia de Software Magazine - Análise Quantitativa de Riscos e suas Técnicas
Planejamento



funcionamento possuir certa similaridade com o processo                                                   Conclusão
de simulação estatística [Gujarati 2002; Galvão 2005; Matias                                                A Entrevista, mesmo no contexto da análise quantita­
Júnior 2006].                                                                                             tiva, é uma técnica bastante subjetiva, pois se baseia, na
  O método de Monte Carlo é um procedimento indutivo que                                                  maioria das vezes, nas experiências vivenciadas pelos
permite tomada de decisões de forma mais consistente, ou seja,                                            entrevistados. Em alguns poucos casos, os entrevista­
as respostas obtidas da sua aplicação não são binárias, mas sim                                           dos fundamentam suas opiniões em dados históricos
estabelecidas em termos probabilísticos [Smith 1973]. Então, essa                                         de projetos, quando guardados. Como ponto relevante
técnica admite determinar uma gama de cenários possíveis para                                             desse processo, é a possibilidade de determinar, quan­
a conclusão do projeto, expondo, desta forma, a probabilidade                                             titativamente, a probabilidade e as consequências dos
de ocorrência de cada cenário.                                                                            riscos sobre os resultados do projeto através de diferentes
  Para a determinação destes cenários e considerando a inci­                                              pontos de vistas.
dência de riscos, utilizam-se distribuições de probabilidades                                               A técnica de Análise de Sensibilidade, mesmo aplicada
ao invés do uso de estimativas únicas, sendo as distribuições a                                           em uma variedade de contextos [Aggarwal et al. 2005;
base para o processo de simulação.                                                                        Do e Rothermel 2008; Harman et al. 2009], ainda precisa
  Uma distribuição de probabilidades é representada matemati­                                             de uma pesquisa mais minuciosa na gestão de prazos
camente por uma função f, chamada função densidade de pro­                                                [Almeida e Ferreira 2008]. De qualquer sorte, a análise
babilidade, cujo gráfico mostra as possibilidades de ocorrência                                           de sensibilidade avalia, independentemente, a mudança
dos resultados possíveis de um evento.                                                                    de uma variável, comparando-a com o seu planejamento
  Existem diversos tipos de distribuições de probabilidades que                                           inicial, haja vista que as variáveis são isoladas. Desta
são oferecidas por software especializado para análise de riscos                                          forma, permite decidir quais dados precisam de refina­
e que podem ser utilizadas para representar as incertezas nos                                             mento antes de iniciar o processo de tomada de decisão,
valores das durações das atividades ou outros parâmetros do                                               concentrando-se nos elementos críticos durante a sua
projeto. São elas as distribuições Beta, Binomial, Exponencial,                                           implantação.
Gamma, Lognormal, Normal, PERT, Poisson, Student, Trian­                                                    Já a análise do Valor Monetário Esperado consegue
gular e Uniforme.                                                                                         estabelecer uma reserva de contingência para cobrir o
  Vale destacar que, por não existir, normalmente, uma base real                                          impacto dos riscos que possam ocorrer, pois considera
para a escolha das distribuições, elas são selecionadas arbitra­                                          todos os possíveis resultados, evitando assim, a simples
riamente [Conrow 1998]. Porém, motivos históricos e entrevistas                                           combinação de todos os melhores e piores casos. A limi­
com especialistas podem ser artifícios para determinar a distri­                                          tação da técnica é que a mesma proporciona melhores
buição de probabilidade específica para o projeto.                                                        resultados quando utilizada ao longo de muitos projetos
                                                                                                          de porte semelhante, com um número de riscos conside­
Análise Comparativa das Técnicas                                                                          rável [Loosemore et al. 2006]. Ou seja, quanto mais riscos
  Na Tabela 2 são tratadas as vantagens e desvantagens das                                                forem identificados, maior será a distribuição da reserva
principais técnicas de análise quantitativa de riscos mostradas                                           de contingência entre os riscos envolvidos.
na seção anterior de forma sintética.                                                                       Entre as técnicas de análise quantitativa de riscos, a
  Todas as técnicas estudadas pregam o auxílio em processos                                               análise da Árvore de Decisão apresenta diversas vanta­
de tomada de decisão, oferecendo resultados numéricos mais                                                gens, conforme mostrado na Tabela 2. A simplicidade,
reais sobre os resultados do projeto. Acrescente-se a isso o fato                                         facilidade de interpretação e a visualização gráfica das
de elas serem aplicadas, principalmente, na gestão de prazos                                              alternativas a serem seguidas, capacitam os envolvi­
(cronograma) ou na de custos, ou em ambas.                                                                dos no processo de tomada de decisão, a entender o

          Técnica                                                             Vantagem                                                                           Desvantagem
Entrevistas                    Têm diversas visões de profissionais com experiências distintas.                                          Dependência da informação obtida com o entrevistado.
Análise de Sensibilidade       Avalia, independentemente, a mudança de uma variável, comparando-a com o seu planejamento inicial.          Não indicação da variação de parâmetros que se relacionam com
                                                                                                                                           uma determinada variável analisada e ausência de estudo mais
                                                                                                                                           detalhado da aplicação da técnica junto à gestão de prazos.
Análise do VME               Consegue estabelecer uma reserva de contingência para cobrir o impacto dos riscos, caso ocorram.              Apresenta melhores resultados quando utilizada com muitos
                                                                                                                                           projetos de porte semelhante e com um número de riscos
                                                                                                                                           suficientes [Loosermore et al. 2006].
Análise da Árvore de Decisão Visualização gráfica dos caminhos a serem seguidos, simplicidade, facilidade de interpretação, flexibilidade, Dificuldade na apresentação dos resultados quando se tem um
                             método não-paramétrico, utilização numa gama de áreas de pesquisa e combinação com outras técnicas cenário de possibilidades muito pequeno ou muito amplo.
                             de tomada de decisão.
Simulação de Monte Carlo     Processo de simulação repetido inúmeras vezes durante uma iteração, obtenção de respostas não binárias e Aleatoriedade na escolha das distribuições de probabilidade e
                             possibilidade de estudar as consequências da tomada de decisão sem executar o projeto [Nóbrega 2007]. demanda de tempo para sua aplicação.
Tabela 2. Vantagens e Desvantagens das principais técnicas da AQR


                                                                                                                             Edição 24 - Engenharia de Software Magazine                          47
procedimento após uma breve explanação. Também, não                                                           executada mais de uma vez. Ademais, não existe uma lógica
assume nenhuma distribuição especial e é capaz de esta­                                                       ou regra para a determinação das distribuições utilizadas,
belecer modelos para qualquer finalidade, desde que tenha                                                     consistindo estas em escolhas aleatórias do responsável pela
informação necessária de treino. Como obstáculo, oferece                                                      execução e análise do método.
dificuldades na apresentação dos resultados quando as
possibilidades são extremas, em termos de quantidade.                                                             Dê seu feedback sobre esta edição!                                                                Feedback
                                                                                                                                                                                                                 eu
 Por último, a Simulação de Monte Carlo, prática comum




                                                                                                                                                                                                             s
                                                                                                                                                                                                          Dê
                                                                                                                 A Engenharia de Software Magazine tem que ser feita ao seu gosto.
e difundida no Project Management Body of Knowledge [PMI




                                                                                                                                                                                                                                sobre e
                                                                                                                 Para isso, precisamos saber o que você, leitor, acha da revista!
2004], quando se usa simulação. Esta técnica gera cenários




                                                                                                                                                                                                                                       s
                                                                                                                                                                                                                    ta
                                                                                                                 Dê seu voto sobre este artigo, através do link:                                                       edição
presumíveis, sem que exista a necessidade de executar o
                                                                                                                 www.devmedia.com.br/esmag/feedback
projeto. Como barreira, demanda tempo, pois precisa ser


  Referências

 [Aggarwal et al. 2005] Aggarwal, K. K., Singh, Y., Chandra, P. e Puri, M. (2005) “Sensitivity analysis of    [Hullet 2004] Hulett, David (2004) “Quantitative Risk Analysis Fundamentals” Defense Acquisition
                                                                                                                                                                                         ,
 fuzzy and neural network models” SIGSOFT Softw. Eng. Notes, ACM, 30, 1-4.
                                  ,                                                                           University, Disponível em: https://acc.dau.mil/CommunityBrowser.aspx?id=19270, Acesso em: 25
                                                                                                              abr. 2009.
 [Almeida e Ferreira 2008] Almeida, E. P. e Ferreira, M. L. R. (2008) “Técnicas de Análise de Risco
 Aplicadas à Planejamento e Programação de Projetos da Construção Civil” IV Congresso Nacional
                                                                            ,                                 [Lima et al. 2008] Lima, E. C. P., Viana, J. C., Levino, N. A. e Mota, C. M. M. (2008) “Simulação de
 de Excelência em Gestão: Responsabilidade Socioambiental das Organizações Brasileiras, Niterói,              Monte Carlo Auxiliando a Análise de Viabilidade Econômica de Projetos” IV Congresso Nacional de
                                                                                                                                                                                         ,
 RJ, Brasil, 31 de julho, 01 e 02 de Agosto.                                                                  Excelência em Gestão: Responsabilidade Socioambiental das Organizações Brasileiras, Niterói, RJ,
                                                                                                              Brasil, 31 de julho, 01 e 02 de Agosto.
 [Baker et al. 1998] Baker, S., Ponniah, D. e Smith, S. (1998) “Techniques for analysis of risks in major
 projects” Journal of the Operations Research Society, 49, pp567-572.
         ,                                                                                                    [Loosermore et al. 2006] Loosemore, Martin, Raftery, John, Reilly, Charlie e Higgon, Dave (2006)
                                                                                                              “Risk Management in Projects” 2nd Edition, Taylor & Francis, New York, USA.
                                                                                                                                           ,
 [Clarke e Bittencourt 2003] Clarke, Robin T. e Bittencourt, Hélio R. (2003) “Uso de Árvores de Decisão na
 Classificação de Imagens Digitais”XI SBSR, Belo Horizonte, Brasil, 05-10 de Abril, INPE, p. 2043 - 2045.
                                   ,                                                                          [Matias Júnior 2006] Matias Júnior, R. (2006) “Análise Quantitativa de Risco Baseada no Método
                                                                                                              de Monte Carlo: Abordagem PMBOK” Congresso Brasileiro de Gerenciamento de Projetos, 29 a 31
                                                                                                                                                  ,
 [Conrow 1998] Conrow, Edmund H.(1998)“Some Limitations of Quantitative Risk Analysis Approaches
                                                                                                              de Março, Florianópolis.
 Used in Project Management”Invited paper by the Office of the Secretary of Defense, April.
                           ,
                                                                                                              [Nóbrega 2007] Nóbrega, Newton C. M. (2007) “Um Estudo Teórico da Avaliação de Riscos em
 [D’Castro 2009] D’Castro, Raphael J. (2009) “Avaliação de Riscos em Projetos de Software a partir do
                                                                                                              Projetos de Investimento em Organizações” Monografia para a graduação em Engenharia de
                                                                                                                                                          ,
 Uso de Técnicas de Inteligência Computacional”Trabalho de Conclusão de Curso, Departamento de
                                                 ,
                                                                                                              Produção, Universidade Federal de Juiz de Fora, Novembro.
 Sistemas e Computação, Engenharia da Computação, Universidade de Pernambuco, Junho.
                                                                                                              [Padayachee 2001] Padayachee, Keshnee (2001) “Techniques Used in Risk Analysis of Software
 [Do e Rothermel 2008] Do, H. e Rothermel, G. (2008) “Using sensitivity analysis to create simplified
                                                                                                              Development” University of South Africa.
                                                                                                                          ,
 economic models for regression testing” ISSTA ‘08: Proceedings of the 2008 international
                                           ,
 symposium on Software testing and analysis, ACM, 2008, 51-62.                                                [Pedro e Guerreiro 2004] Pedro, Lucilene M. e Guerreiro, Reinaldo (2004)“Aplicação de Árvores de Decisão
                                                                                                              na Análise Financeira”In: 4º Congresso USP de Controladoria e Contabilidade, São Paulo, v.1, p.0-0.
                                                                                                                                   ,
 [Galvão 2005] Galvão, Márcio (2005) “Análise Quantitativa de Riscos com Simulação de Monte
 Carlo” Revista Mundo PM, Project Management, Número 05, Out./Nov., Ano 1.
      ,                                                                                                       [PMI 2004] PMI, Project Management Institute. (2004) “A Guide to the Project Management Body
                                                                                                              of Knowledge” ANSI/PMI 99-01-2004, Four Campus Boulevard, Newtown Square, USA.
                                                                                                                           ,
 [Gama 2002] Gama, João (2002) “Árvores de Decisão” Laboratory of Artificial Intelligence and
                                                        ,
 Decision Support, University of Porto, Portugal, Disponível em: http://www.liaad.up.pt/~jgama/               [Ragsdale 2001] Ragsdale, Cliff T. (2001) “Spreadsheet modeling and decision analysis: a practical
 Aulas_ECD/arv.pdf, Acesso em: 9 ago. 2009.                                                                   introduction to management science” 3rd, Cincinnati, Ohio, South-Western College Pub.
                                                                                                                                                    ,

 [Grass 2007] Grass, John (2007)“Valor Monetário Esperado (VME)”The ICPM – Project Management
                                                               ,                                              [Silva e Belderrain 2004] Silva, Roterdan M. e Belderrain, Mischel C. N. (2004) “Considerações sobre
 Community, Disponível em: http://www.theicpm.com/index.php?option=com_content&view=art                       Análise de Sensibilidade em Análise de Decisão” Instituto Tecnológico de Aeronáutica, Divisão de
                                                                                                                                                                ,
 icle&id=2772:valor-monetario-esperado-vme&catid=82, Acesso em: 08 ago. 2009.                                 Engenharia Mecânica-Aeronáutica, Relatório de Iniciação Científica, 44p, CNPq.

 [Gujarati 2002] Gujarati, D. N. (2002) “Econometria básica” 3ª edição, Makron Books, São Paulo.
                                                           ,                                                  [Smith 1973] Smith, Kerry (1973) “Monte Carlo Methods,Their Role for Econometrics”Lexinton Books.
                                                                                                                                                                                               ,
 [Harman et al. 2009] Harman, M., Krinke, J., Ren, J. e Yoo, S. (2009) “Search based data sensitivity         [Vose 2002] Vose, David (2002) “Risk Analysis: a quantitative guide” 2nd Edition, UK, John Wiley
                                                                                                                                                                                 ,
 analysis applied to requirement engineering” GECCO ‘09: Proceedings of the 11th Annual
                                                 ,                                                            & Sons, 418 p.
 conference on Genetic and evolutionary computation, ACM, 1681-1688.

 [Hillson 2005] Hillson, David (2005)“Using Decision Trees”Risk Doctor Briefing,The Risk Doctor, Disponível
                                                          ,
 em: http://www.risk-doctor.com/pdf-briefings/risk-doctor18e.pdf, Acesso em: 10 abr. 2009.




48    Engenharia de Software Magazine - Análise Quantitativa de Riscos e suas Técnicas
Desenvolvimento
 Nesta seção você encontra artigos voltados para diferentes
 abordagens de apoio ao desenvolvimento de projetos de software




 Automatizando Testes Funcionais em
 Aplicações Web
 Utilizando a Ferramenta Selenium para execução de Testes Funcionais
                                                                                                       De que se trata o artigo?
                                                                                                       Neste artigo iremos apresentar a implementação
                                                                                                       de uma estratégia de teste funcional utilizando
                                                                                                       uma ferramenta, Selenium IDE, para automação da
                                                                                                       execução e re-execução dos testes.

                                                                                                       Para que serve?
                                                                                                       O artigo demonstra na prática a ferramenta Sele-
                                                                                                       nium IDE para automação de teste funcional usan-
                                                                                                       do uma estratégia de teste do tipo capture-replay,
                                                                                                       contextualizada ao domínio de aplicações web.

                                                                                                       Em que situação o tema é útil?
                                                                                                       O tema é útil para os desenvolvedores e en-
                                                                                                       genheiros de software que planejam aplicar
                                                                                                       a automação de testes no desenvolvimento de
                                                                                                       aplicações web.




                                                         N
                                                                   os artigos anteriores escri­      funcional, onde o sistema é tratado em
                                                                   tos para a ES Magazine, nos       uma visão macroscópica e sua avaliação
         Arilo Cláudio Dias Neto                                   preocupamos em discutir os        é feita sem considerar detalhes internos
         ariloclaudio@gmail.com                          conceitos básicos sobre Teste de Sof­       de implementação.
         É Doutor em Engenharia de Sistemas e Com-       tware e apresentar uma estratégia que         No entanto, apesar de ser totalmente
         putação formado na COPPE/UFRJ e possui          possibilita a geração de casos de teste     viável, a aplicação desta estratégia de
         o certificado de Implementador do modelo        de software a partir de casos de uso já     teste quando realizada manualmente
         MPS. Possui 7 anos de experiência em análise,
         desenvolvimento e teste de software. É editor
                                                         especificados. Tal estratégia seria apli­   representa um grande esforço para um
         técnico da Revista SQL Magazine, gerenciada     cada no nível de teste de software, re­     projeto de software. Com isso, pensar em
         pelo Grupo DevMedia.                            presentando um tipo de técnica de teste     mecanismos para automação dos testes


                                                                                             Edição 24 - Engenharia de Software Magazine               49
consiste em pensar em mecanismo para reduzir o esforço desta             Teste funcional representa uma categoria de técnicas de
atividade no contexto geral de um projeto de software.                 teste em que o componente de software a ser testado é abor­
  É importante termos em mente que automação por si só                 dado como se fosse uma caixa-preta, ou seja, não se consi­
não resulta em redução de esforço nos testes ou aumento da             dera o comportamento interno do mesmo (Figura 1). Dados
qualidade desta atividade. A automação simplesmente torna              de entrada são fornecidos, o teste é executado e o resultado
automática algumas tarefas do processo de testes, mas ela não          obtido é comparado a um resultado esperado previamente
faz milagres. Como assim? Uma ferramenta de testes apenas              conhecido. Haverá sucesso no teste se o resultado obtido for
automatiza o nosso conhecimento técnico sobre teste de sof­            igual ao resultado esperado. O componente de software a
tware. Sendo assim, se não tivermos conhecimento técnico               ser testado pode ser um método, uma função interna, um
adequado sobre teste de software, o conjunto de casos de               programa, um componente, um conjunto de programas e/
teste gerado para avaliar nosso sistema não terá cobertura ou          ou componentes ou mesmo uma funcionalidade. A técnica
qualidade suficiente, de forma que a ferramenta irá apenas             de teste funcional é aplicável a todos os níveis de teste, seja
automatizar a execução do conjunto de testes inadequados,              teste de sistema, aceitação, integração ou unidade.
ou seja, não termos qualquer ganho com isso.
  Se tivermos um processo de teste bem definido e um bom co­
nhecimento sobre estratégias de teste, a automação pode trazer
grandes benefícios a um projeto de software. Nesse contexto,
neste artigo iremos apresentar a implementação de uma estra­
                                                                       Figura 1. Técnica de Teste Funcional (caixa-preta)
tégia de teste funcional apresentada no artigo “Planejamento
de Testes a partir de Casos de Uso” publicado na edição 6 da            Um dos mecanismos para facilitar a realização de testes
ES Magazine utilizando uma ferramenta, Selenium IDE, para              funcionais é pensar na automação de algumas tarefas que
automação da execução e re-execução dos testes.                        compõem o processo de testes. Esse é o assunto da próxima
                                                                       seção.
Estratégias de Teste de Software
  Durante o desenvolvimento de um software, diversas                   Automação dos Testes
estratégias para teste podem ser aplicadas. De acordo com                Automação dos testes consiste no uso de algum apoio com­
PRESSMAN (2005), essas estratégias podem ser categorizadas             putacional, ferramentas, para controlar a execução dos testes,
da seguinte forma:                                                     a comparação dos resultados e comportamentos obtidos com
• Baseadas em implementação: utiliza o código como elemento            a execução dos testes em relação aos resultados e compor­
para a geração dos testes. É uma atividade cara, sob o ponto de        tamentos esperados, a configuração das pré-condições dos
vista de recursos necessários para a sua realização, e bastante        testes e outras atividades do controle dos testes e relato de seus
complexa quando o tamanho do código se torna bastante gran­            resultados (KALOWA e HUIZINGA, 2007). Comumente, a au­
de. É totalmente dependente de apoio ferramental;                      tomação dos testes envolve automatizar um processo manual
• Baseadas em especificação: utiliza um documento de espe­             já estabelecido em uma organização que utiliza um processo
cificação como base para geração dos testes. Assim, tenta-se           de testes formalizado.
cobrir as imposições e restrições descritas nos requisitos esta­         Apesar de os testes manuais poderem encontrar muitos de­
belecidos para o sistema. A automação da geração dos testes            feitos em um software, essa tarefa é complexa, desgastante e
nesse caso é mais complicada, caso não se tenha um formalis­           consome muito tempo. Além disso, ela pode não ser tão efetiva
mo para a elaboração da especificação do sistema;                      em revelar alguns tipos de falhas em um software.
• Baseadas em modelos: é uma subcategoria de estratégias                 A automação dos testes é um processo de escrever um pro­
baseada em especificação. Utiliza modelos desenvolvidos ao             grama computacional para realizar testes que, caso contrário,
longo do processo de desenvolvimento que representam o com­            seriam feitos manualmente. Uma vez que os testes foram
portamento ou estrutura do software como base para a geração           automatizados, eles podem ser executados rapidamente,
dos testes. Facilita a geração automática dos testes, porem é          logicamente que proporcionalmente à quantidade de casos
completamente dependente da facilidade para a construção do            de teste a serem executados. Este representa, na maioria dos
modelo adotado e de sua qualidade (corretude).                         casos, o método de teste com custo mais efetivo para produtos
                                                                       que possuem uma longa vida, com muitas manutenções, pois
  Cada estratégia apresentada possui sua aplicabilidade, van­          pequenas modificações em certas partes do software ao longo
tagens e desvantagens. Não é propósito deste artigo discutir           de sua vida podem fazer com que outras partes do software que
qual seria a estratégia mais adequada. Ao longo deste artigo           estariam funcionando anteriormente deixem de funcionar.
iremos adotar uma estratégia de geração de testes baseada em             Existem duas abordagens gerais para automação dos testes:
especificação, representada pelos casos de uso de um sistema.          • Testes dirigidos a código: as interfaces para classes, módu­
Assim, partiremos desta informação para a geração de casos             los ou bibliotecas são testadas com uma larga variedade de
e procedimentos (roteiros) de teste, seguindo uma estratégia           argumentos de entrada para validar se os resultados que estão
de teste funcional.                                                    sendo retornados estão corretos;


50   Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
Validação, Verificação & Teste



• Teste de Interface (em inglês, Graphical User Interface, ou
simplesmente GUI): um framework de teste gera eventos de                        Nota do DevMan
interface do usuário tais como digitação de teclas ou cliques
do mouse, e observa as mudanças que ocorrem na interface do             Teste Baseado em Modelos
usuário. Assim, podemos validar se o comportamento obser­               Teste Baseado em Modelos (TBM) consiste em uma estratégia de teste na qual
vado do software após tais eventos estão corretos.                   casos de teste são derivados totalmente ou parcialmente de um modelo que des-
                                                                     creve algum aspecto (ex: funcionalidade, segurança, desempenho, etc.) de um sof-
  Uma forma de gerar casos de teste automaticamente é utili­         tware (UTTING e LEGEARD, 2007). Para sua utilização, é necessário que o compor-
zando a estratégia de Teste Baseado em Modelos (ver Nota             tamento ou estrutura do software (ou parte deles) tenha sido formalizado através
DevMan), que adota modelos representando o sistema para              de modelos com regras bem definidas (ex: métodos formais, máquinas de estado
geração de casos de teste, porém existem outras estratégias          finito, diagramas UML, dentre outros).
interessantes.                                                          A estratégia de TBM normalmente inclui diferentes níveis de abstração, um mo-
  O quê automatizar, quando automatizar ou até mesmo se é            delo comportamental/estrutural do software, o relacionamento entre modelos e
necessário de fato automatizar são decisões cruciais que a equi­     código, uma tecnologia para geração dos casos de teste, a importância dos critérios
pe de teste deve tomar. Selecionar as funcionalidades corretas       de seleção dos testes (algoritmos para geração dos casos de teste) e uma discussão
do software para automação é um fator essencial para deter­          do que pode ou não ser automatizado durante os testes (PRETSCHNER, 2005).
minar o sucesso da automação. Automatizar funcionalidades
instáveis ou funcionalidades que estão sofrendo alterações
constantes deve ser evitado (MARICK, 2010).                        • Realizar teste em momentos específicos e sempre que
  Neste artigo, iremos focar apenas em teste de interface, como    necessário, por exemplo, podemos optar por sempre exe­
veremos com mais detalhe na continuidade deste artigo.             cutar os testes a cada modificação no sistema com um
                                                                   esforço baixo, pois os testes já estariam prontos para serem
Importância da Automação dos Testes                                executados;
  Uma das principais características das atividades de teste       • Simplificação nos testes de regressão, pois os testes podem
de software, assim como a atividade de desenvolvimento de          ser repetidos sempre que a equipe de teste julgar necessário
software em geral, é o fato de ser realizada por pessoas, e        com pouco esforço;
consequentemente passível de erros. A famosa frase “errar é        • Possibilidade de testar o sistema com diferentes conjuntos
humano” é o fato que nos leva a desejar testes automatizados.      de dados, pois o processo de geração e/ou execução é reali­
Diversos problemas relacionados aos testes a serem aplicados       zado por um computador, de forma que é mais simples gerar
em um software podem ser evitados a partir da automação            e utilizar nos testes diferentes combinações de dados.
desta atividade, dentre os quais:
• Dados de entrada de teste incorretos, informando valores           Na seção seguinte iremos focar no tipo de automação de
ou tipos de dados inválidos;                                       teste que iremos seguir neste artigo: teste de interface.
• Não perceber um comportamento incorreto do software a
um certo evento;                                                   Teste de Interface (Graphical User Interface [GUI] Testing)
• Reportar os resultados dos testes incorretamente;                  Muitas ferramentas de automação provêm funcionalidades
• Esquecer de executar alguns casos de teste;                      de gravar a execução de um software e rodar esta gravação que
• Esquecer de executar alguma pré-condição para execução           permitem aos usuários interativamente “filmar” as ações do usu­
dos testes;                                                        ário e repeti-la quantas vezes quiser, comparando os resultados
• Alteração na execução da sequência de casos de teste, o que      e comportamentos obtidos com aqueles esperados. A vantagem
poderia levar a execução dos testes a um fracasso.                 desta abordagem, chamada capture-replay, é que ela requer pouco
                                                                   ou nenhum desenvolvimento de software. Nesta abordagem, uma
  Além de evitar os problemas causados por eventuais               ferramenta de teste grava as entradas de teste como se estivesse
falhas humanas, a automação dos testes pode ainda nos              sendo submetido ao software que está sendo testado. Os casos de
proporcionar:                                                      entrada armazenados podem então ser usados para reproduzir
• Uma forma de armazenar conhecimento sobre o domínio do           os testes posteriormente. Esta abordagem pode ser aplicada a
projeto ou sobre as funcionalidades que compõem o sistema,         qualquer aplicação que possua uma interface de usuário gráfica.
minimizando a dependência pelas pessoas que compõem o              No entanto, a dependência dessas funcionalidades representa
projeto;                                                           mais problemas de confiabilidade e manutenibilidade. Alterar
• Garantir a acurácia dos relatórios de teste, pois são ge­        o nome de um botão ou movê-lo para outra parte da tela pode
rados de forma automática e sempre seguindo um mesmo               requerer que os testes tenham que ser regravados. A abordagem
padrão;                                                            capture-replay também muitas vezes acrescenta atividades irrele­
• Velocidade na execução dos testes, pois uma vez projetado,       vantes ou registra incorretamente algumas atividades. Isso são
sua execução é automática e pode não depender de interven­         limitações reais desta abordagem, mas ainda assim ela possui
ção humana;                                                        bastante aplicabilidade em projetos de software.


                                                                                      Edição 24 - Engenharia de Software Magazine                     51
Nome                         Empresa                                                                      URL
HP QuickTest Professional           HP                       https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&cp=1-11-127-24^1352_4000_100__
IBM Rational Functional Tester      IBM Rational             http://www-01.ibm.com/software/awdtools/tester/functional/index.html
Rational robot                      IBM Rational             http://www-142.ibm.com/software/products/br/pt/robot/
Selenium                            Ferramenta opensource    http://seleniumhq.org/
SilkTest                            Borland                  http://www.borland.com/br/products/silk/silktest/index.html
TestComplete                        AutomatedQA              http://www.automatedqa.com/products/testcomplete/
TestPartner                         Micro Focus              http://www.microfocus.com/products/TestPartner/index.asp
Watir                               Ferramenta opensource    http://watir.com/
Site com diversas outras ferramentas Ferramenta opensource   http://www.opensourcetesting.org/
Tabela 1. Ferramentas de Automação de Testes de Software mais populares


   Uma variação deste tipo de ferramenta seriam as ferra­                                     5. Possibilita configurar depuração e pontos de paradas para
 mentas para teste de aplicações web. Neste caso, a inter­                                    verificação durante os testes;
 face são as páginas web. Este tipo de ferramenta também                                      6. Permite salvar os testes como HTML, scripts em Ruby ou
 requer pouco ou nenhum desenvolvimento de software.                                          outro formato.
 No entanto, o framework para testes pode utilizar diferen­
 tes técnicas pois ele está lendo HTML em vez de eventos                                       A partir da próxima seção passaremos a usar Selenium em
 de janela de aplicações.                                                                     um estudo de caso real.
   Por fim, outra variação de automação de testes sem
 scripts que não usa a ideia de capture-replay, em vez                                        Estudo de Caso: Americanas.com
 disso constrói um modelo da aplicação a ser testada e                                          Neste artigo, realizaremos um teste para uma das opções
 então permite ao testador criar casos de teste simples­                                      disponíveis no site amerianas.com, o cadastro de um novo cliente
 mente editando os parâmetros e condições de teste. Esta                                      realizado no endereço https://carrinho.americanas.com.br/portal/
 abordagem pode ser aplicada a qualquer software baseado                                      meuCadastro.portal.
 em interfaces.                                                                                 O cadastro de um novo cliente deve seguir alguns passos:
   As ferramentas de automação de teste mais conhecidas                                       1. Indicação de que ainda não é um cliente (Figura 2). Neste
 podem ser caras, apesar de já existirem diversas ferramen­                                   momento, podemos seguir pelas opções “Já sou cliente – login
 tas gratuitas e com um bom conjunto de funcionalidades                                       e senha”, “Já sou cliente – esqueci minha senha”, “Já sou cliente
 de apoio à automação dos testes. Por isso, é importante                                      – meu e-mail mudou”, “Não sou cliente – informe CEP”, “Não
 realizar uma análise de custo-benefício no momento de                                        sou cliente – não sei meu CEP” e “Não sou cliente – estou fora
 escolher as ferramentas a serem aplicadas em um projeto.                                     do Brasil”. No nosso estudo de caso, consideraremos apenas a
 A Tabela 1 apresenta uma lista com algumas das ferra­                                        opção “Não sou cliente – informe CEP”;
 mentas de automação mais utilizadas.
   Neste artigo, utilizaremos a ferramenta Selenium IDE
 para automação de teste funcional usando uma estratégia
 de teste do tipo capture-replay, porém contextualizada ao
 domínio de aplicações web.

 Ferramenta Selenium IDE
   Selenium IDE é um ambiente de desenvolvimento in­
 tegrado para os testes com Selenium. Foi desenvolvido
                                                                                               Figura 2. Tela Inicial do Cadastro de Clientes
 como uma extensão do Firefox e permite gravar, editar e
 depurar os testes. O Selenium IDE inclui o Selenium Core,                                    2. A partir da opção anterior, será exibido um formulá­
 permitindo gravar e reproduzir os testes no ambiente que                                     rio de cadastro de cliente contendo uma série de campos
 eles serão executados, de maneira fácil e rápida.                                            (Figura 3);
   Entre suas funcionalidades, podemos citar:                                                 3. Preenchido o formulário de cadastro, será realizada a vali­
 1. Gravação e reprodução dos testes de forma simples;                                        dação dos dados e confirmação da operação, onde é indicado
 2. Seleção de campo inteligente, que captura as informa­                                     que o cliente foi de fato cadastrado (Figura 4).
 ções sobre os campos a partir da página;
 3. Funcionalidade autocompletar para todos os comandos                                       Projetando Testes para nosso Estudo de Caso
 de Selenium;                                                                                  Primeiramente, precisamos projetar os testes deste estudo de
 4. Possibilita navegar entre os testes;                                                      caso passo-a-passo, campo-a-campo utilizando algum critério


52      Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
Validação, Verificação & Teste


                                                                     Campo      Categoria            Valor          Resultado Esperado
para geração de testes funcionais que foi apresentado no artigo
“Planejamento de Testes a partir de Casos de Uso” publicado                  Teste Válido     69046-610      Passar para o PASSO 2
na edição 6 da ES Magazine. É isso que faremos.                    CEP                                       Mensagem de erro:“CEP Inválido.”
                                                                             Teste Inválido   06543-232
                                                                   Tabela 2. Casos de Teste para o PASSO 1


                                                                     Dessa forma, podemos criar um único procedimento de
                                                                   teste responsável pela execução dos dois casos de teste, onde
                                                                   primeiramente seria executado o caso de teste inválido e em
                                                                   seguida o caso de teste válido.

                                                                   • Projetando os testes do PASSO 2:
                                                                     Neste passo, existem ao total 22 campos, sendo que 14 são de
                                                                   preenchimento obrigatório, 5 são opcionais (em cinza na Figura 3)
                                                                   e 3 são somente leitura (gerados a partir de outros campos –
                                                                   cidade, estado e país). A Tabela 3 apresenta os casos de teste
                                                                   gerados para cada campo do formulário utilizando o critério
                                                                   de geração particionamento em classes de equivalência.

                                                                     Observe que cada campo possui no máximo dois casos de
                                                                   teste, de forma que podemos combinar todos os casos de teste
                                                                   inválidos em um mesmo procedimento de teste (obviamente
                                                                   alguns casos de teste válidos também irão compor este pro­
                                                                   cedimento de teste – procedimento de teste 01 na Tabela 3) e
                                                                   criar um segundo procedimento de teste apenas com casos
                                                                   de teste válidos, confirmando o cadastro do cliente (proce­
                                                                   dimento de teste 02).
                                                                     A partir de agora, iremos usar a ferramenta Selenium para gra­
                                                                   var e executar os testes projetados para nosso estudo de caso.
Figura 3. Formulário de Cadastro de Clientes

                                                                   Utilizando Selenium para Gravação dos Testes
• Projetando os testes do PASSO 1:                                   Como foi dito na Seção Ferramenta Selenium IDE, esta ferra­
  Como foi dito na seção anterior, neste passo iremos considerar   menta funciona como um plug-in do Firefox, de forma que é
apenas a opção “Ainda não sou cliente – Informe seu CEP”.          necessário este browser para gravar e reproduzir os testes.
Esta opção possui apenas um campo, CEP, e o botão Prosseguir.        Então vamos começar?
Neste caso, usaremos o critério particionamento em classes           Primeiramente, abra o Firefox e acesse o endereço de cadas­
de equivalência para gerar testes válidos e testes inválidos,      tro de um novo cliente (https://carrinho.americanas.com.br/
conforme a Tabela 2.                                               portal/meuCadastro.portal). Em seguida, abra a ferramenta




Figura 4. Confirmação do Cadastro de Clientes


                                                                                     Edição 24 - Engenharia de Software Magazine          53
Campo                        Categoria                  Valor                                Resultado Esperado                        Procedimento de Teste
                                    Teste Válido      Arilo Claudio              Dados válidos, verifica os demais campos                          02
Nome
                                    Teste Inválido    Em branco                  Mensagem de erro:“Nome Inválido.”                                 01
                                    Teste Válido      14005039731                Dados válidos, verifica os demais campos                          02
CPF
                                    Teste Inválido    14005039710                Mensagem de erro:“CPF Inválido.”                                  01
                                    Masculino         Masculino                  Dados válidos, verifica os demais campos                          02
Sexo
                                    Feminino          Feminino                   Dados válidos, verifica os demais campos                          01
                                    Teste Válido      13/09/1982                 Dados válidos, verifica os demais campos                          02
Data de Nascimento
                                    Teste Inválido    31/02/1982                 Mensagem de erro:“Data de nascimento Inválida.”                   01
                                    Teste Válido      92 2345-6789               Dados válidos, verifica os demais campos                          02
Telefone Residencial
                                    Teste Inválido    Em branco                  Mensagem de erro:“Telefone residencial inválido.”                 01
Telefone Celular                    Teste Válido      92 8181-8181               Dados válidos, verifica os demais campos                          01 e 02
Telefone Comercial                  Teste Válido      92 3456-7890               Dados válidos, verifica os demais campos                          01 e 02
                                    Teste Válido      ariloclaudio@gmail.com     Dados válidos, verifica os demais campos                          02
E-mail
                                    Teste Inválido    Em branco                  Mensagem de erro:“E-mail inválido.”                               01
                                    Teste Válido      arilo                      Dados válidos, verifica os demais campos                          02
Senha
                                    Teste Inválido    abc                        Mensagem de erro:“Senha inválida.”                                01
                                    Teste Válido      Igual ao campo Senha       Dados válidos, verifica os demais campos                          02
Confirme a Senha
                                    Teste Inválido    Diferente do campo Senha   Mensagem de erro:“A senha e confirmação de senha não conferem.”   01
                                    Teste Válido      Arilo Claudio              Dados válidos, verifica os demais campos                          02
Como gostaria de ser chamado?
                                    Teste Inválido    Em branco                  Mensagem de erro:“A senha e confirmação de senha não conferem.”   01
                                    SIM               SIM                        Dados válidos, verifica os demais campos                          02
Deseja receber e-mail de ofertas?
                                    NÃO               NÃO                        Dados válidos, verifica os demais campos                          01
Descrição do Endereço               Teste Válido      Residencial                Dados válidos, verifica os demais campos                          01 e 02
                                    Teste Válido      Rua B29                    Dados válidos, verifica os demais campos                          02
Endereço
                                    Teste Inválido    Em branco                  Mensagem de erro:“Endereço inválido.”                             01
                                    Teste Válido      120                        Dados válidos, verifica os demais campos                          02
Número
                                    Teste Inválido    Em branco                  Mensagem de erro:“Número do endereço inválido.”                   01
Complemento                         Teste Válido      Apt 123                    Dados válidos, verifica os demais campos                          01 e 02
                                    Teste Válido      69046-610                  Dados válidos, verifica os demais campos                          02
CEP
                                    Teste Inválido    06543-232                  Mensagem de erro:“CEP inválido.”                                  01
                                    Teste Válido      Alvorada                   Dados válidos, verifica os demais campos                          02
Bairro
                                    Teste Inválido    Em branco                  Mensagem de erro:“Bairro inválido.”                               01
Tabela 3. Casos de Teste para o PASSO 2


Selenium, que já deve estar instalada em seu Firefox. Ao abrir
esta ferramenta, será visualizada sua tela responsável pela
gravação dos testes, na qual por padrão ela já está ativada para
gravação, como pode ser visualizado no ícone com uma bola
vermelha localizado no canto superior direito da tela.
  Em seguida, sem fazer nada em Selenium, devemos re­
tornar à tela de cadastro de clientes e preencher seguindo
primeiramente o procedimento de teste referente ao passo
1. O resultado disto em Selenium deve ser uma tela similar
à tela apresentada na Figura 5. Neste momento, podemos
interromper a gravação dos testes. Para isso, basta clicar no
ícone citado anteriormente de forma que este não apareça
como pressionado na tela. Com isso, temos o primeiro roteiro
de teste gravado em Selenium. A partir disso podemos salvá-                       Figura 5. Roteiro de Teste do PASSO 1
lo ou até mesmo reproduzi-lo, repetindo os testes. Iremos
falar mais sobre sua reprodução na próxima seção.                                     Para isso, primeiramente temos que nos certificar que a
  Neste roteiro, foi adicionado um comando verifyTextPresent                          tela do Firefox está no passo 2 do processo de cadastro
(em destaque na Figura 5) que verifica se após digitar um                             de clientes e precisamos limpar a ferramenta Selenium
CEP inexistente, a tela retornada contém a mensagem “CEP                              para que ela inicie uma nova gravação. Depois de veri­
inválido.” que deveria ser retornada por este caso de teste.                          ficado, devemos iniciar uma nova gravação e preencher
  Finalizado o passo 1, passaremos à gravação do passo 2.                             o formulário de cadastro de clientes primeiramente de


54       Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
Validação, Verificação & Teste



acordo com o procedimento de teste 01 (dados inválidos),                   é obter exatamente os resultados obtidos na primeira
conforme visualizado na Figura 6. Observe que ao final                     execução.
do roteiro de testes foram adicionados comandos para
verificar se cada campo que recebeu um valor inválido                      Utilizando Selenium para Reprodução dos
reportou este problema durante a execução dos testes.                      Testes
  Depois, devemos repetir o processo (limpar os dados em                     A reprodução dos testes é bastante simples. Para cada
Selenium e iniciar nova gravação) com os dados do proce­                   passo, basta abrir o arquivo com o roteiro de teste que
dimento de teste 02 (dados válidos), conforme a Figura 7.                  foi salvo durante a gravação, e então clicar no ícone com
Observe que ao final do roteiro de testes foi adicionado um                uma seta verde e três barras verdes à sua direita. Neste
comando para verificar se a tela resultante após esse proce­               momento, a ferramenta Selenium irá reproduzir todos os
dimento foi a tela de cadastro com sucesso (Figura 4). Isso                passos feitos no momento da gravação dos testes. Caso
foi feito analisando se existia o texto “Olá, Arilo Claudio”,              cada comando seja executado com sucesso, a linha é
que deveria ser exibido após o cadastro do usuário que optou               pintada na cor verde. Caso uma falha tenha ocorrido, a
por ser chamado de “Arilo Claudio”.                                        linha é pintada com a cor vermelha, indicando que houve
                                                                           problemas que precisam ser analisados.
                                                                             A Figura 8 exibe uma falha ocorrida no primeiro co­
                                                                           mando ao tentar reproduzir o procedimento de teste 02
                                                                           do PASSO 2 (sua linha está em vermelho).




Figura 6. Roteiro de Teste do PASSO 2 (Procedimento de Teste 01 – Dados
Inválidos)




                                                                          Figura 8. Reprodução do Procedimento de Teste 02 do PASSO 2 com uma
                                                                          falha


                                                                             OBS: até o dia 11/03/2010, se você não preenchesse o
                                                                           CEP no formulário de cadastro, o sistema apresentava
                                                                           uma falha (Figura 9). Neste caso, não teríamos como
                                                                           gravar testes com esta condição, pois eles falhariam e não
                                                                           teríamos como reproduzi-los em um segundo momento.
                                                                           Em situações como essa, a equipe de desenvolvimento
                                                                           deve primeiramente corrigir o problema, e então os testes
                                                                           devem ser gravados.

Figura 7. Roteiro de Teste do PASSO 2 (Procedimento de Teste 02 – Dados     Conclusões
Válidos)
                                                                            Este artigo apresentou um possível mecanismo para
  Feito isso, temos nossos roteiros de teste gravados e sal­               automação de teste funcional para aplicações web a partir
vos (devemos salvá-los a cada gravação), e a partir de então               do uso da ferramenta Selenium. Tal mecanismo adotou a
poderemos reproduzi-los sempre que necessário.                             estratégia de geração de casos de testes a partir de casos
  Observe que a gravação só pode ser reproduzida caso a                    de uso apresentada em outro artigo publicado na edição
execução inicial dos testes (realizada durante a gravação)                 6 da ES magazine.
tenha sido bem sucedida, ou seja, os testes não falha­                      O objetivo foi apresentar uma solução de automação
ram, pois o objetivo durante as reproduções dos testes                     dos testes, deixando destacado que a automação só faz


                                                                                          Edição 24 - Engenharia de Software Magazine    55
Figura 9. Falha real ao tentar cadastrar um cliente sem informar seu CEP


sentido a partir do bom conhecimento técnico sobre testes                                              Referências
de software pela equipe de testes, caso contrário há grande                                            KOLAWA, A.; HUIZINGA, D. (2007).  Automated Defect Prevention: Best Practices in Software
chance de os testes serem malsucedidos. Ferramentas auto­                                              Management.Wiley-IEEE Computer Society Press. p. 74. ISBN 0470042125.
matizam o conhecimento técnico da equipe de teste, mas não
conseguem passar sobre este conhecimento para aumentar                                                 MARICK, B. “When Should a Test Be Automated?”StickyMinds.com. Acessado em 10/03/2010.
                                                                                                                                                   .
a qualidade dos testes. Uma vez que este conhecimento                                                  PRETSCHNER, A. (2005), “Model-based testing” Proceedings of 27th International Conference on
                                                                                                                                                     ,
é provido pela equipe de teste, ferramentas contribuem                                                 Software Engineering, (ICSE‘05), pp. 722-723.
significativamente para a redução do esforço dos testes e
aumento de sua qualidade.                                                                              UTTING, M.; LEGEARD, B.; (2007),“Practical Model-Based Testing: A Tools Approach” ISBN-13: 978-0-
                                                                                                                                                                                       ,
                                                                                                       12-372501-1, Morgan-Kaufmann.

  Dê seu feedback sobre esta edição!                                            Feedback               CRAIG, R.D., JASKIEL, S. P.,“Systematic Software Testing”Artech House Publishers, Boston, 2002. 
                                                                                                                                                               ,
                                                                             eu
                                                                         s
                                                                      Dê




  A Engenharia de Software Magazine tem que ser feita ao seu gosto.                                    PRESSMAN, R. S., “Software Engineering: A Practitioner’s Approach” McGraw-Hill, 6th ed, Nova York,
                                                                                                                                                                        ,
                                                                                            sobre e




  Para isso, precisamos saber o que você, leitor, acha da revista!                                     NY, 2005.
                                                                                                   s




                                                                                ta
                                                                                   edição
  Dê seu voto sobre este artigo, através do link:
                                                                                                       ROCHA, A. R. C., MALDONADO, J. C., WEBER, K. C. et al., “Qualidade de software – Teoria e prática”
                                                                                                                                                                                                        ,
  www.devmedia.com.br/esmag/feedback                                                                   Prentice Hall, São Paulo, 2001.




56    Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
Desenvolvimento
 Nesta seção você encontra artigos voltados para diferentes
 abordagens de apoio ao desenvolvimento de projetos de software




 Testes funcionais automatizados com
 Hudson e Selenium RC
       Fabrício Nogueira de Almeida
       fnalmeida@gmail.com                                                                                      De que se trata o artigo?
       É pós-graduando do Curso de Gerência de pro-                                                             Definir uma abordagem para criação e execução de


                                                             J
       jetos em engenharia de software pelo centro de
       Ensino Superior de Juiz de Fora - CES, Bacharel em
                                                                                                                testes funcionais automatizados.
       Sistemas de informação pela Faculdade Metodis-             á é bastante aceita pela comunidade
       ta Granbery de Juiz de Fora e Analista de Sistemas         de desenvolvedores o uso de tes­              Para que serve?
       da Uptodate Consulting.                                    tes para auxiliar na qualidade dos            O modelo proposto automatiza a execução de testes
       Victor Vidigal Ribeiro                                softwares desenvolvidos. Dentre os tipos           funcionais criados através da ferramenta Selenium
       victorvidigal@gmail.com                               de testes utilizados existe o teste funcional,     IDE, o que proporciona menor dependência de recur-
       É mestrando em Engenharia de Sistemas e Com-          que verifica se o sistema está cumprindo           sos humanos nessa tarefa e auxilia a gerenciamento
       putação pela COPPE/UFRJ e pós-graduando do            com seus requisitos utilizando a perspec­          da execução dos testes.
       Curso de Gerência de projetos em engenharia de
                                                             tiva do usuário. Na prática, rodar testes
       software pelo Centro de Ensino Superior de Juiz
       de Fora - CES.                                        funcionais significa executar o sistema e          Em que situação o tema é útil?
                                                             verificar seu comportamento através dos            Em ambientes onde é preciso testar constan-
       Marco Antônio Pereira Araújo                          retornos fornecidos por este sistema.              temente os artefatos gerados, e em projetos
       maraujo@devmedia.com.br
                                                               Para que não haja a necessidade de exe-          onde os testes são complexos e demandam
       É Doutor e Mestre em Engenharia de Sistemas e
       Computação pela COPPE/UFRJ, Especialista em           cutar esses testes manualmente existem             muitos recursos humanos.
       Métodos Estatísticos Computacionais e Bacharel        ferramentas que, depois de programa­
       em Matemática com Habilitação em Informática          das, executam o sistema automaticamen­
       pela UFJF, Professor e Coordenador do Curso de Ba-    te e verificam seus retornos. Uma dessas           Este artigo propõe a construção de um
       charelado em Sistemas de Informação do Centro de
                                                             ferramentas é a Selenium IDE, utilizada          ambiente de integração contínua onde
       Ensino Superior de Juiz de Fora, Professor do Curso
       de Bacharelado em Sistemas de Informação da Fa-       neste artigo.                                    testes funcionais são executados periodi­
       culdade Metodista Granbery, Professor e Diretor do      Uma técnica que pode ser utilizada em          camente sobre um sistema, disponível em
       Curso Superior de Tecnologia em Análise e Desen-      conjunto com os testes funcionais é a            um repositório Subversion (SVN) neste
       volvimento de Sistemas da Fundação Educacional        técnica de integração contínua. Com esta         caso. O artigo mostra o funcionamento de
       D. André Arcoverde, Professor do Curso de Bacha-
                                                             técnica é possível uma maior confiabili­         uma pequena aplicação que calcula se um
       relado em Ciência da Computação da Faculdade
       Governador Ozanam Coelho, Analista de Sistemas        dade no sistema que está no repositório,         aluno foi ou não aprovado, que é utilizada
       da Prefeitura de Juiz de Fora, Editor da Engenharia   pois possibilita que os testes definidos         como exemplo. Depois disso, explica como
       de Software Magazine.                                 sejam executados periodicamente.                 gerar testes funcionais com a ferramenta


                                                                                                      Edição 24 - Engenharia de Software Magazine              57
Selenium IDE e como importar esses testes para o framework              Instalando o selenium IDE
de testes JUnit. Depois disso, é demonstrado como os testes que           Podemos então iniciar a construção dos testes funcionais
foram exportados podem ser executados através da ferramenta             utilizando o Selenium IDE, um plug-in para o navegador
Selenium RC e, posteriormente, como executar esses testes em            Firefox que permite gravar, editar, depurar e reproduzir
um servidor de integração contínua chamado Hudson. Para criar           testes funcionais para páginas web.
o projeto que será testado foi utilizado o Maven, uma ferramenta          Para instalar o Selenium IDE, acesse o endereço https://
de gerenciamento e automação de projetos em Java que permite            addons.mozilla.org/pt-BR/firefox/ usando o navegador
uma maior integração entre o projeto a ser testado e o Hudson.          Firefox, e informe no campo de busca o termo selenium
                                                                        ide. Após isto, clique no link Selenium IDE que aparece na
Aplicação a ser testada                                                 lista e, em seguida, no botão Add to Firefox, como mostra
  Para a execução dos testes a serem demonstrados neste artigo          a Figura 3.
foi criada uma aplicação que calcula a aprovação de um aluno.
É importante conhecer o funcionamento da aplicação para que
se possa entender os testes elaborados.
  Esta aplicação funciona através de um browser e recebe o
nome, frequência, nota 1, nota 2 e nota final do aluno como
parâmetros de entrada. Além desses parâmetros, o sistema
possui ainda um botão Calcular Aprovação, como pode ser
visto na Figura 1.




                                                                       Figura 3. Instalação do Selenium IDE


                                                                         Após a instalação, o plug-in estará disponível através do
                                                                        menu Ferramentas do navegador.

                                                                        Criando os casos de teste com Selenium IDE
                                                                         Para criar os casos de testes funcionais, primeiro é pre­
                                                                        ciso acessar a aplicação de exemplo, criada anteriormente,
                    Figura 1. Tela do sistema                           com o navegador Firefox. Depois, no menu Ferramentas,
                                                                        selecione a opção Selenium IDE.
 Após inserir os dados e clicar no botão Calcular Aprovação,             Uma nova janela, como mostra a Figura 4, se abrirá
o sistema emite uma mensagem para o usuário informando                  permitindo iniciar a gravação dos testes. Observe no
se o aluno foi ou não aprovado seguindo as seguintes regras:            canto superior direito dessa janela se o botão que indica
caso a frequência do aluno for menor que 75, ele é reprovado.           o status da gravação está pressionado. Caso este botão
Caso contrário, a média entre a nota 1 e a nota 2 é calculada.          esteja pressionado, cada ação do usuário no browser será
Se esta média for menor que 30, o aluno é reprovado, caso               gravada pelo Selenium IDE. Por ação pode-se entender,
seja maior ou igual a 70, o aluno é aprovado. Se a média entre          por exemplo, o preenchimento de um campo ou um clique
as duas notas for maior ou igual a 30 e menor que 70, então é           em um botão.
calculado a média entre a média anterior e a nota final. Se esta         Para iniciar gravação dos testes basta preencher os cam­
nova média for maior ou igual a 50, o aluno é aprovado. Caso            pos da aplicação com os valores descritos na Tabela 1,
contrário, ele é reprovado.                                             referentes ao primeiro caso de teste a ser realizado, consi­
 A Figura 2 mostra a mensagem que o sistema exibe ao usuário            derando um aluno sendo reprovado por infrequência.
após clicar no botão Calcular Aprovação, em um caso que o
aluno é aprovado. É bastante importante observar que este tipo                            Campo                        Valor
de resposta do sistema é que possibilita a execução dos testes          Nome                                   João
funcionais, pois através dessas mensagens é que os testes vão           Frequência                             74
verificar se o sistema agiu como esperado ou não.
                                                                        Nota 1                                 0
                                                                        Nota 2                                 0
                                                                        Nota Final                             0
                 Figura 2. Mensagem de resposta                        Tabela 1. Reprovação por infrequência


58   Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC
Validação, Verificação e Teste



                                                                   Seguindo os procedimentos acima, podem ser gerados mais
                                                                  4 casos de testes com os dados apresentados nas Tabelas 2,
                                                                  3, 4 e 5.

                                                                                    Campo                          Valor
                                                                  Nome                                  João
                                                                  Frequência                            75
                                                                  Nota 1                                70
                                                                  Nota 2                                70
                                                                  Nota Final                            0
                                                                  Tabela 2. Aprovação por nota

                                                                                    Campo                          Valor
                                                                  Nome                                  João
                                                                  Frequência                            75
                                                                  Nota 1                                29
                                                                  Nota 2                                30
                                                                  Nota Final                            0
                                                                  Tabela 3. Reprovação por nota

                                                                                    Campo                          Valor
                                                                  Nome                                  João
 Figura 4. Janela do Selenium IDE                                 Frequência                            75
                                                                  Nota 1                                30
  Após o preenchimento dos campos, clique no botão Calcular
                                                                  Nota 2                                30
Aprovação. O sistema retornará a mensagem dizendo que o
aluno foi reprovado.                                              Nota Final                            69
  Neste momento, é preciso informar ao Selenium IDE o que         Tabela 4. Reprovação por nota final
era esperado caso o valor 74 fosse digitado para a frequência
e todas as notas fossem preenchidas com zero. Neste caso, ob­                       Campo                          Valor
servando as regras descritas no início do artigo, o aluno seria   Nome                                  João
reprovado por infrequência. Logo, espera-se que o sistema emi­    Frequência                            75
ta uma mensagem informando que o aluno foi reprovado.
                                                                  Nota 1                                30
  Para passar esta informação ao Selenium IDE, selecione o
                                                                  Nota 2                                30
texto da mensagem, clique com o botão direito do mouse e
escolha a opção verifyTextPresent, como mostra a Figura 5.        Nota Final                            70
Em seguida, deve-se terminar a gravação do teste, clicando no     Tabela 5. Aprovação por nota final
botão do canto superior direito da ferramenta. Por fim, deve-se
gravar o caso de teste, a partir do menu Arquivo.                   Depois de criar os casos de testes necessários eles devem
                                                                  ser exportados como um arquivo de teste do framework JUnit
                                                                  para que possam ser executados com o Hudson e o Selenium
                                                                  RC. Essas duas ferramentas são necessárias para a execução
                                                                  automática dos testes funcionais e serão vistas posteriormente
                                                                  neste artigo.
                                                                    Para exportar os testes gravados, acesse a opção Arquivo /
                                                                  Exportar Teste Como / Java (JUnit) Selenium RC, informe um
                                                                  nome para o arquivo precedido pela extensão .java e clique
                                                                  sobre o botão Salvar. Com isto, será gerado um arquivo de teste
                                                                  do JUnit baseado no teste que acabou de ser gravado. É preciso
                                                                  exportar cada caso de teste gravado com o Selenium IDE.
                                                                    Depois de exportar cada arquivo, é preciso editá-los e
                                                                  alterar a URL que indica a página inicial do teste. Para
Figura 5. Gravando resultado do caso de teste                     isso, altere o primeiro parâmetro do método SetUp, de


                                                                                  Edição 24 - Engenharia de Software Magazine   59
http://change-this-to-the-site-you-are-testing/ para o endereço        para programar a execução dos testes e criar um ambiente de
do servidor da aplicação. Neste exemplo, a URL inicial é http://       testes automatizado.
localhost:8000/.
                                                                          Listagem 1. Arquivo pom.xml
Criando o projeto de testes
                                                                          <project xmlns=”http://maven.apache.org/POM/4.0.0” xmlns:xsi=
  Neste ponto do artigo, já temos os casos de testes exportados
                                                                            ”http://www.w3.org/2001/XMLSchema-instance”
como um arquivo executável pelo JUnit. Precisamos agora criar               xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0
um projeto onde esses testes estarão contidos.                                http://maven.apache.org/maven-v4_0_0.xsd”>
  Para criar este projeto será utilizado o IDE Eclipse com o plug-          <modelVersion>4.0.0</modelVersion>
in m2eclipse que permite a integração entre o IDE e o Maven.                <groupId>CalcularAprovacaoSelenium</groupId>
                                                                            <artifactId>CalcularAprovacaoSelenium</artifactId>
Este plug-in pode ser instalado através da URL http:/  /m2eclipse.
                                                                            <packaging>jar</packaging>
sonatype.org/sites/m2e. A criação de um projeto utilizando o                <version>0.0.1-SNAPSHOT</version>
Maven não foi por acaso. Esse gerenciador de projetos trabalha              <name>CalcularAprovacaoSelenium</name>
muito bem com o servidor de integração contínua Hudson, que                 <url>http://maven.apache.org</url>
será utilizado posteriormente.                                              <dependencies>
                                                                            	
                                                                          	 <dependency>
  Para criar o projeto, abra o Eclipse e acesse o menu File / New
                                                                          	        <groupId>junit</groupId>
/ Other, e escolha a opção Maven / Maven Project. Depois disso,           	        <artifactId>junit</artifactId>
é preciso dar um nome ao projeto criado. No artigo o projeto              	        <version>3.8.2</version>
recebeu o nome de CalcularAprovacaoSelenium.                              	        <scope>test</scope>
  Depois de criado, deve-se alterar o arquivo pom.xml, gerado             	 </dependency>
                                                                          	 <dependency>
pelo Maven, para que fique semelhante à Listagem 1. Com essas
                                                                          	      <groupId>org.seleniumhq.selenium.client-drivers</groupId>
                                                                                 	
alterações no arquivo, as dependências do JUnit e Selenium-Java-          	      <artifactId>selenium-java-client-driver</artifactId>
                                                                                 	
Client, necessárias para a execução dos testes, são adicionadas           	      <version>1.0.1</version>
                                                                                 	
no projeto.                                                               		    </dependency>
  Após criar o projeto e definir suas dependências, devem-se co­             </dependencies>
                                                                              	
                                                                          </project>
piar os testes gerados através da ferramenta Selenium IDE para
o pacote test. A Figura 6 mostra a estrutura do projeto criado.

                                                                         O Selenium RC pode ser baixado no endereço http://seleniu­
                                                                       mhq.org/download/. Depois de baixá-lo, extraia seu conteúdo
                                                                       em algum diretório do computador. No exemplo demonstrado
                                                                       no artigo, é utilizado o diretório C:.
                                                                         Para executar o Selenium RC, deve-se abrir o prompt de co­
                                                                       mando e digitar os comandos demonstrados na Listagem 2.
                                                                       O primeiro comando acessa o diretório onde o JRE (Java Run­
                                                                       time Environment) está instalado e a linha seguinte executa
                                                                       o Selenium RC.

                                                                          Listagem 2. Execução do Selenium RC

                                                                          cd C:Program Files (x86)Javajre6bin
                                                                          java -jar C:selenium-remote-control-1.0.1selenium-server-1.0.1
                                                                          selenium-server.jar


            Figura 6. Estrutura do projeto de testes
                                                                         Uma dica para agilizar este processo é criar um arquivo com
 Tanto o projeto de teste quanto o projeto a ser testado devem         extensão .bat com o conteúdo da Listagem 2.
ser enviados para um repositório de dados. Neste artigo, será            Após executar o Selenium RC, uma janela como a ilustrada
utilizado o SVN. Como o uso de repositórios já é bastante              na Figura 7 é exibida. Essa janela deve ser mantida sempre
comum, isso não será abordado nesse artigo.                            aberta para que o Selenium RC fique ativo possibilitando a
                                                                       execução dos testes.
Selenium Remote-Control                                                  Neste ponto será possível testar a execução dos testes dire­
 O Selenium Remote-Control, ou simplesmente Selenium                   tamente pelo Eclipse. Para isso, devemos clicar com o botão
RC, permite a execução automatizada de testes criados no               direito sobre o projeto, acessar a opção Run As e depois Ma­
Selenium IDE. No ambiente proposto, será utilizado o Sele­             ven Test, como mostra a Figura 8. Com esse procedimento, o
nium RC juntamente com o servidor de integração Hudson                 projeto será executado chamando o Maven2 e atribuindo ao


60   Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC
Validação, Verificação e Teste



parâmetro Goal o valor test, indicando que os testes do projeto   endereço http://localhost:8080/hudson. A Figura 9 mostra a
devem ser rodados.                                                tela inicial do servidor de integração Hudson.




                                                                  Figura 9. Tela inicial do Hudson

Figura 7. Prompt Selenium RC                                        O próximo passo será configurar o Hudson. Para isso, de­
                                                                  vemos acessar no menu lateral a opção Gerenciar Hudson e
Instalação e configuração do servidor de integração               depois Configure System.
hudson                                                              Entre as principais configurações do Hudson, deve ser
  Para garantir mais produtividade e melhor controle sobre a      habilitada a instalação do Maven através da sua opção
execução dos testes, vamos utilizar o Servidor de Integração      Install automatically. Marcando essa opção, o Hudson
Hudson, que permite a execução dos testes funcionais de for­      se encarregará de baixar as bibliotecas necessárias para
ma automatizada e contínua. O Hudson será responsável por         construção de projetos do tipo Maven2. É preciso também
baixar o projeto de testes direto do repositório SVN e executar   incluir a instalação do JDK desmarcando sua opção Install
os testes no Selenium RC através das configurações feitas com     automatically e informando o caminho onde o JDK foi ins­
o Maven2, e conforme agendado no aplicativo.                      talado no campo JAVA_HOME. A Figura 10 ilustra como é
  O Hudson é um projeto web desenvolvido em Java e dispo­         feita essa configuração.
nibilizado para download através do link https:/  /hudson.dev.            	
java.net/ e pode ser executado através de um servidor web.
Neste exemplo, será utilizado o Apache Tomcat, disponível
para download em http://tomcat.apache.org/.




                                                                  Figura 10. Configuração Hudson


                                                                   Para mais detalhes sobre as opções de configuração dis­
                                                                  ponível pelo Hudson, veja o artigo Integração contínua com
                                                                  Hudson, Maven2, TestNG e Subversion publicado na edição
                                                                  21 da Engenharia de Software Magazine.

                                                                  Criando tarefas do hudson
                                                                    Concluída a etapa de configuração, é possível criar uma tare­
                                                                  fa e agendar a execução dos testes. Para isso, deve-se acessar o
                                                                  menu lateral Nova Tarefa e, na tela seguinte, deve-se informar
                                                                  o nome da tarefa a ser criada. Nesse exemplo, é chamada de
                                                                  TesteSeleniumCalcularAprovacao. Em seguida, selecione a
                                                                  opção Construir um projeto maven2 e clique em OK.
                                                                    Após isto, uma nova janela será exibida, sendo possível
                                                                  configurar como será a construção dessa tarefa. Em Geren­
Figura 8. Executando os testes no eclipse                         ciamento de código fonte, deve-se marcar a opção Subversion,
                                                                  e depois informar o caminho do projeto no repositório SVN
 Depois de instalado o Tomcat, deve-se copiar o arquivo hud­      no campo URL do Repositório. Essa configuração indicará ao
son.war para a pasta webapps e reiniciar o servidor para fazer    Hudson o caminho que ele utilizará para baixar os arquivos
o deploy da aplicação. Feito isso, acesse o Hudson através do     do projeto.


                                                                                   Edição 24 - Engenharia de Software Magazine   61
A seguir é possível configurar a periodicidade de execução
dos testes. Para isso, a opção Construir periodicamente em
Disparadores de construção deve ser marcada. Na caixa
de texto deve ser inserido o seguinte valor: * * * 5. Essa
configuração indica ao Hudson que esta tarefa deve ser
executada no minuto cinco de cada hora. Clicando sobre o
ícone    localizado ao lado direito da caixa de texto, o Hu­
dson fornece um tópico de ajuda que explica com detalhes
as opções de agendamento.
  A próxima configuração a ser feita é indicar no campo POM
Raiz o caminho para o arquivo pom.xml, que mantém as
configurações do Maven2 no projeto. Neste exemplo, o cami­
nho do arquivo de configuração é <NOME DO PROJETO>/
pom.xml. A opção Goals and options deve ser preenchida                  Figura 12. Console Output
com o valor test. Esse parâmetro indica ao Hudson que deve
executar o Maven para rodar os testes do projeto.                       Conclusão
  Por fim, é possível configurar o Hudson para enviar noti­               Esse artigo procurou mostrar como montar um ambiente
ficações de email a cada construção executada com falhas.               de testes funcionais automatizados utilizando ferramentas
Para isso, a opção Notificação de e-mail deve ser marcada e             Open Source. Esse ambiente foi construído com o servidor
deve-se ainda informar os e-mails para os quais desejamos               de integração Hudson, o gerenciador de projetos Maven2,
que sejam enviadas notificações.                                        repositório de dados SVN, framework de testes JUnit e um
  Depois de realizadas as devidas configurações, as altera­             aplicativo responsável por executar os testes gerados através
ções devem ser salvas através do botão Salvar. Após isto,               do Selenium IDE, o Selenium RC.
uma tela como a mostrada na Figura 11 será exibida. Neste                 Executar testes muitas vezes pode se tornar uma tarefa que
ponto é possível construir uma tarefa manualmente clicando              demanda tempo e consome muito recursos em um projeto. Mas
no link Construir Agora.                                                devido a sua importância dentro da Engenharia de Software,
                                                                        deixá-la de lado pode significar entregar um produto com alto
                                                                        índice de falhas para o cliente. Com a alternativa proposta
                                                                        neste artigo, ganhamos um alto índice de produtividade na
                                                                        execução dos testes funcionais garantindo mais qualidade ao
                                                                        produto final que será entregue ao cliente.

                                                                           Dê seu feedback sobre esta edição!                                            Feedback
                                                                                                                                                      eu




                                                                                                                                                  s
                                                                                                                                               Dê
                                                                           A Engenharia de Software Magazine tem que ser feita ao seu gosto.




                                                                                                                                                                     sobre e
                                                                           Para isso, precisamos saber o que você, leitor, acha da revista!



                                                                                                                                                                            s
                                                                                                                                                         ta
                                                                                                                                                            edição
Figura 11. Tela principal da tarefa                                        Dê seu voto sobre este artigo, através do link:
                                                                           www.devmedia.com.br/esmag/feedback
  O Hudson exibe em Histórico de construções o status das
                                                                           Links
construções já realizadas e também aquelas que estão em
execução. Clicando sobre uma construção e acessando a op­                  Hudson
                                                                           http://hudson-ci.org/
ção Console Output é possível visualizar o log de execução
da construção, como mostra a Figura 12.                                    Maven
  Depois de fazer essas configurações, o Hudson irá baixar                 http://maven.apache.org/
o sistema periodicamente do repositório e irá executar os
                                                                           Tomcat
testes funcionais criados no Selenium IDE. Com isso, pode-                 http://tomcat.apache.org/
se economizar bastante esforço da equipe de testes que não
precisará executar todos os testes do sistema a cada alteração             SeleniumRC
                                                                           http://seleniumhq.org/projects/remote-control/
realizada pelos programadores. Além disso, o sistema que
está no repositório pode ser considerado mais confiável,                   Subversion
pois ele está sempre sendo testado.                                        http://subversion.tigris.org/




62    Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC
Validação, Verificação e Teste




        Edição 24 - Engenharia de Software Magazine   63
AMIGO
                                                                                 ...só pra lembrar,
 Existem coisas                                                                sua assinatura pode
                                                                                   estar acabando!
 que não
 conseguimos
 ficar sem!
                                                                                  Renove Já!

                www.devmedia.com.br/renovacao
                                                                            Para mais informações:
                                                                            www.devmedia.com.br/central


64   Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC

Revista Engenharia de Software n° 44

  • 3.
    EDITORIAL D iversas metodologias de desenvolvimento de software voltadas para o con- trole têm sido elaboradas uma vez que um projeto de software, ao longo do seu ciclo de vida, tem uma grande quantidade de itens de informação tais como documentos, código-fonte, dados, manuais e outros, produzidos e até modifi- cados, pelos mais diversos motivos. Para que a qualidade do software seja garantida, em função destas modificações, é Ano 2 - 24ª Edição - 2010 Impresso no Brasil necessário que se faça uso da Gerência de Configuração de Software (GCS). A Gerên- cia de Configuração de Software tem como objetivo gerenciar e controlar a evolução de um software através do controle formal de versão e solicitação de mudanças. É Corpo Editorial uma forma sistemática e organizada de controlar as modificações de um software tornando possível manter sua integridade ao longo do tempo. A quantidade de itens Colaboradores que podem estar sob controle da GCS e os níveis de controle exigidos sobre estes Rodrigo Oliveira Spínola itens irá variar de empresa para empresa ou mesmo de projeto para projeto. Sendo rodrigo@sqlmagazine.com.br assim, o uso desta prática em conformidade com modelos de maturidade mantidos Marco Antônio Pereira Araújo por entidades que possuam credibilidade nacional e internacional, e também o uso Eduardo Oliveira Spínola de ferramentas adequadas que garantam a qualidade deste processo, é fundamental para que uma empresa obtenha êxito e reconhecimento. Capa e Diagramação Para empresas de grande porte, isto não chega a ser um grande problema pois Romulo Araujo - romulo@devmedia.com.br normalmente se dispõem de capital e pessoal qualificado para manter tais práticas. Coordenação Geral Entretanto, quando voltamos a olhar para as pequenas empresas, o cenário é exata- Daniella Costa - daniella@devmedia.com.br mente o oposto. Neste contexto, a Engenharia de Software Magazine destaca nesta edição uma ma- Revisor e Supervisor téria cujo objetivo é mostrar uma solução especifica, de boa qualidade e baixo custo, Thiago Vincenzo - thiago.v.ciancio@devmedia.com.br que atenda as exigências dos modelos de maturidade e que possa ser utilizada para Na Web implementar a Gerência de Configuração de Software em pequenas empresas. Uma www.devmedia.com.br/esmag leitura muito interessante. Além desta matéria, esta edição traz mais seis artigos: • Automatizando Testes Funcionais em Aplicações Web Apoio • Testes de segurança • A Comunicação no Processo de Software • Testes funcionais automatizados com Hudson e Selenium RC • Medição de Software • Análise Quantitativa de Riscos e suas Técnicas Desejamos uma ótima leitura! Equipe Editorial Engenharia de Software Magazine Atendimento ao Leitor A DevMedia conta com um departamento exclusivo para o atendimento ao leitor. Se você tiver algum problema no recebimento do seu exemplar ou precisar de Rodrigo Oliveira Spínola algum esclarecimento sobre assinaturas, exemplares anteriores, endereço de rodrigo@sqlmagazine.com.br bancas de jornal, entre outros, entre em contato com: Doutorando em Engenharia de Sistemas e Computação (COPPE/UFRJ). Mestre em Engenharia de Software (COPPE/UFRJ, 2004). Bacharel em Ciências da Computação Cristiany Queiróz– Atendimento ao Leitor (UNIFACS, 2001). Colaborador da Kali Software (www.kalisoftware.com), tendo minis- www.devmedia.com.br/mancad (21) 2220-5338 trado cursos na área de Qualidade de Produtos e Processos de Software, Requisitos e Kaline Dolabella Desenvolvimento Orientado a Objetos. Consultor para implementação do MPS.BR. Atua Gerente de Marketing e Atendimento como Gerente de Projeto e Analista de Requisitos em projetos de consultoria na COPPE/ kalined@terra.com.br (21) 2220-5338 UFRJ. É Colaborador da Engenharia de Software Magazine. Marco Antônio Pereira Araújo - Editor Publicidade (maraujo@devmedia.com.br) Para informações sobre veiculação de anúncio na revista ou no site entre em Doutor e Mestre em Engenharia de Sistemas e Computação pela COPPE/UFRJ - Li- contato com: nha de Pesquisa em Engenharia de Software, Especialista em Métodos Estatísticos Kaline Dolabella publicidade@devmedia.com.br Computacionais e Bacharel em Matemática com Habilitação em Informática pela UFJF, Professor e Coordenador do curso de Bacharelado em Sistemas de Informação Fale com o Editor! do Centro de Ensino Superior de Juiz de Fora, Professor do curso de Bacharelado em É muito importante para a equipe saber o que você está achando da revista: que tipo de artigo Sistemas de Informação da Faculdade Metodista Granbery, Professor e Diretor do Cur- você gostaria de ler, que artigo você mais gostou e qual artigo você menos gostou. Fique a so Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Fundação vontade para entrar em contato com os editores e dar a sua sugestão! Educacional D. André Arcoverde, Analista de Sistemas da Prefeitura de Juiz de Fora, Se você estiver interessado em publicar um artigo na revista ou no site SQL Magazine, Colaborador da Engenharia de Software Magazine. entre em contato com os editores, informando o título e mini-resumo do tema que você gostaria de publicar: Eduardo Oliveira Spínola (eduspinola@gmail.com) Rodrigo Oliveira Spínola - Colaborador É Colaborador das revistas Engenharia de Software Magazine, Java Magazine e SQL Ma- editor@sqlmagazine.com.br gazine. É bacharel em Ciências da Computação pela Universidade Salvador (UNIFACS) onde atualmente cursa o mestrado em Sistemas e Computação na linha de Engenharia de Software, sendo membro do GESA (Grupo de Engenharia de Software e Aplicações).
  • 4.
    Caro Leitor Caro Leitor, Para esta edição, temos um conjunto de 4 vídeo aulas. Estas vídeo aulas estão disponíveis para download no Portal da En- genharia de Software Magazine e certamente trarão uma significativa contribuição para seu aprendizado. A lista de aulas publicadas pode ser vista abaixo: Tipo: Validação,Verificação & Teste Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte I - Tipo: Validação,Verificação & Teste Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte III - Explorando Casos de Uso para apoiar Testes Projeto dos Testes a partir de Casos de Uso Autor: Arilo Claudio Dias Neto Autor: Arilo Claudio Dias Neto Mini-Resumo: Nesta vídeo-aula é apresentado como preparar um modelo de casos Mini-Resumo: Nesta vídeo-aula é apresentado com detalhes o último passo que de uso e suas especificações para apoiar nas atividades de teste. São apresentadas as compõe o processo para apoiar no projeto de testes de software a partir de casos de informações que devem compor a especificação de um caso de uso e em seguida um uso: a alocação de casos e procedimentos de teste. Para isso, é seguido um caso de uso template de especificação de casos de uso. Ao final, é apresentado um processo para de exemplo (REALIZAR DEPÓSITO) e passamos por todas as etapas para construção dos apoiar no projeto de testes de software a partir de casos de uso. testes.Neste momento utilizamos os critérios para geração dos testes (particionamento por equivalência, análise do valor limite e grafo de causa-efeito) apresentados em Tipo: Validação,Verificação & Teste aulas anteriores. Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte II - Projeto dos Testes a partir de Casos de Uso Tipo: Validação,Verificação & Teste Autor: Arilo Claudio Dias Neto Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte IV – Exercício Mini-Resumo: Nesta vídeo-aula é apresentado com detalhes o processo para Autor: Arilo Claudio Dias Neto apoiar no projeto de testes de software a partir de casos de uso, citado na aula Mini-Resumo: Nesta vídeo-aula é apresentado um outro exemplo de construção de anterior. Ele é formado por uma sequência de 4 passos que vão desde a identi- testes de software a partir de casos de uso (CADASTRAR FUNCIONÁRIO).Com isso,ficam ficação dos atores de um modelo de casos de uso até a construção de casos e disponíveis 2 exemplos com características diferentes a fim de facilitar o aprendizado. procedimentos de testes. Nesta vídeo-aula são apresentados apenas os 3 primeiros Ao final,são deixados pontos em aberto para que quem estiver acompanhando as aulas passos deste processo. possa dar continuidade ao projeto dos testes, como um exercício. ÍNDICE Engenharia 06 - Testes de segurança Eduardo Habib 14 - Gerência de Configuração Alberto Boller Filho, Rodrigo Oliveira Spinola, Marcelo Nascimento Costa e Marcos Kalinowski 31 - Medição de Software Monalessa Perini Barcellos Agilidade 38 - A Comunicação no Processo de Software Márcia Regina Simm Cantú Planejamento e Gerência 43 - Análise Quantitativa de Riscos e suas Técnicas Marcio Souza, Cristine Gusmão e Hermano Perrelli Desenvolvimento 49 - Automatizando Testes Funcionais em Aplicações Web Arilo Cláudio Dias Neto 57 - Testes funcionais automatizados com Hudson e Selenium RC Fabrício Nogueira de Almeida, Victor Vidigal Ribeiro e Marco Antônio Pereira Araújo 4 Engenharia de Software Magazine
  • 5.
    Edição 05 -Engenharia de Software Magazine 5
  • 6.
    Engenharia Nesta seção você encontra artigos voltados para testes, processo, modelos, documentação, entre outros Testes de segurança Testes de segurança em aplicações web De que se trata o artigo? Para que serve? Neste artigo veremos a importância de se reali- A realização de testes de segurança em aplicações zar testes de segurança em aplicações Web. Ao Web diminui a probabilidade de um software ser dis- desenvolver uma aplicação web, deve-se pensar ponibilizado para o usuário final com falhas críticas de na segurança dos dados durante toda a fase de segurança e que podem causar prejuízos ao usuário, desenvolvimento. Isso minimiza as falhas de se- seja ele financeiro ou a liberação de dados sigilosos. gurança que chegam ao usuário final. Esse artigo tratará dos testes de segurança realizados pelo Em que situação o tema é útil? testador após o software já estar desenvolvido. Testar a segurança de aplicações Web é importante Será demonstrada a importância de se realizar em qualquer aplicação que contenha dados sigilosos testes em aplicações web, as falhas de segu- e/ou onde ocorra, de alguma forma, transações finan- rança mais comuns na Internet e, por fim, serão ceiras entre o cliente e o servidor, pois diminuem a demonstradas extensões do Firefox e algumas probabilidade do software ser colocado em produção ferramentas que auxiliam nos testes de aplica- com uma falha crítica de segurança e que pode vir a Eduardo Habib ções web. ser explorada por alguma pessoa mal intencionada. eduardohabib@gmail.com Possui Graduação e mestrado em Ciência da Computação na UFMG. Atua na área de testes de software há nove anos. Nesses anos teve experiência no planejamento, especificação e execução de testes manuais, automação de testes, testes de desempenho e testes de A segurança. Possui três anos de experiência le- cionando no ensino superior. Freqüentemente segurança dos softwares de­ focados nos pontos onde a segurança ministra treinamentos e/ou palestras relacio- senvolvidos atualmente está tem uma probabilidade maior de ser nados a testes de software já tendo, inclusive, se tornando um ponto cada vez comprometida. ministrado a disciplina de Testes de Software mais importante a ser testado. Entretan­ Nesse artigo será demonstrada a im­ na PUC Minas. Possui as certificações CQA - to, testar a segurança de um software portância de se realizar testes de segu­ Certified Quality Assurance da IBM e CTFL do BSTQB. Atualmente é Gerente de testes no é algo muito complexo e custoso. Por­ rança em aplicações web. Serão apresen­ SYNERGIA - DCC/UFMG. tanto, os testes de segurança devem ser tadas quais as falhas de segurança são 6 Engenharia de Software Magazine - Testes de segurança
  • 7.
    Validação, Verificação &Teste mais comuns em aplicações web e algumas ferramentas livres Gartner, em que se estima que os ataques contra os sistemas que auxiliam nesses testes. do departamento de defesa dos EUA foram 60% maiores em 2009, se comparados com o ano anterior. Testes de segurança Além do aumento do número de invasões que podem ser No início da internet existiam apenas sites estáticos. Os visualizados na Figura 1, um estudo publicado pela Univer­ sites existentes desempenhavam papel apenas de repositó­ sidade de Michigan, revelou que mais de 75% dos sites de rios de informações que continham documentos estáticos, bancos, que são os que mais investem em segurança, não são e os navegadores web foram criados como uma forma de inteiramente seguros como dizem ser e estão sujeitos a falhas visualização desses documentos. A maioria dos sites não de segurança. Outro estudo, do instituto de pesquisa WhiteHat autenticava usuários porque não havia necessidade já que Security, publicou dados demonstrando que cerca de 64% dos a mesma informação era exibida para todos os usuários. Se 1364 sites de companhias avaliados possuíam pelo menos uma um invasor comprometesse um servidor, ele normalmente falha de segurança crítica. não ganhava acesso a nenhuma informação confidencial, visto que toda a informação já estava liberada para o público. No máximo, o invasor poderia escrever algum conteúdo no site ou utilizar o servidor como repositório de arquivos. Hoje em dia a internet é completamente diferente. A maioria dos web sites são aplicações complexas e possuem um fluxo de informações nos dois sentidos (servidor e navegador). Elas suportam login, transações financeiras e acesso a dados pessoais. O conteúdo exibido para os usu­ ários geralmente é gerado dinamicamente e muitas vezes é específico para cada usuário. Muitos dos dados proces­ sados, e exibidos, são pessoais. A segurança é, portanto, uma grande questão: ninguém utilizará uma aplicação web caso acredite que suas informações confidenciais serão exibidas para terceiros. Atualmente, para as aplicações web proverem as funcio­ Figura 1. Total de incidentes reportados ao CERT.br nalidades mais básicas, muitas vezes é necessário acessar sistemas internos da empresa e esses sistemas, muitas Isso é muito crítico para as empresas já que o aumento do vezes, contêm dados sigilosos. Uma falha em uma dessas faturamento das empresas que comercializam produtos na aplicações web pode comprometer todo o servidor. Um web está diretamente ligado à sua reputação. Poucas pessoas invasor que conseguir comprometer a aplicação web pode gostariam de fazer negócio com um site inseguro e, devido a roubar informações pessoais e com isso realizar ações isso, as organizações não costumam publicar detalhes sobre maliciosas contra os outros usuários. a segurança de seus dados, ataques sofridos e vulnerabili­ Tanto as empresas desenvolvedoras de software quanto dades, com o objetivo de não adquirir uma má reputação. os usuários finais têm grande interesse na segurança das Por isso, os números podem ser ainda mais alarmantes do aplicações: as empresas, devido à necessidade de aumentar que os publicados pelo CERT.br. o faturamento com comércio na internet, os usuários por­ Dentre os diversos fatores que influenciam o aumento que eles terão mais segurança para utilizar aplicativos. do número de incidentes de segurança, como a maior popularização da internet pelo mundo e o surgimento de Por que fazer testes de segurança? ferramentas que auxiliam nesses ataques, deve-se destacar Apesar de recentemente ter havido uma aumento da pre­ outro fator que contribui para o aumento dos ataques: a ocupação com segurança, notícias de invasões continuam evolução constante da tecnologia utilizada nas aplicações no noticiário e o número de incidentes de segurança tem web. Como a tecnologia utilizada no desenvolvimento de aumentado ano a ano. aplicações web evolui muito rapidamente, as aplicações web Segundo dados divulgados pelo Centro de Estudos, Res­ trazem consigo, a todo o momento, uma nova variedade de posta e Tratamento de Incidentes de Segurança no Brasil falhas de segurança. Novos ataques, que antes do desen­ (CERT.br), e que podem ser visualizados na Figura 1, em volvimento da aplicação não eram conhecidos, são criados 2009 foram registradas 358.343 notificações de incidentes após o desenvolvimento e podem ser exploradas até serem de segurança. Isso representa um aumento de 61% em corrigidos. relação a 2008 e de 11530% em relação ao número de inci­ Alguns problemas, como a injeção SQL têm diminuído a dentes registrados em 1999, primeiro ano da medição. Esses frequência de ocorrência conforme os desenvolvedores se números são coerentes com outro estudo publicado pela conscientizam deles. Entretanto, a introdução cada vez mais Edição 24 - Engenharia de Software Magazine 7
  • 8.
    frequente de novastecnologias possibilita novas possibilidades O principal problema das aplicações web é que, como a aplicação de exploração. não tem como garantir quais entradas os clientes irão submeter, Existem diversas e excelentes ferramentas proprietárias pode-se submeter entradas arbitrárias, mesmo que a aplicação que auxiliam no teste de segurança de aplicações web. Con­ faça tratamento no cliente para evitar isso. Portanto, qualquer tudo, a maioria dessas ferramentas comerciais possui um aplicação web deve considerar que todos os usuários são poten­ custo bastante elevado. Esse artigo se concentrará, então, na ciais invasores e devem tomar medidas para evitar que pessoas apresentação de extensões para navegadores e ferramentas mal intencionadas utilizem essas entradas para comprometer a Open Source que ajudam os testadores e especialistas em aplicação. Esse problema se manifesta de várias formas: segurança nos testes de segurança de aplicações web. • Usuários podem interferir em qualquer conjunto de dados transmitidos entre o cliente e o servidor, incluindo requisições, Principais falhas e a utilização de SSL cookies e cabeçalhos HTTP. Qualquer controle implementado Conforme pôde ser visto na seção anterior, o número de do lado do cliente, como validações de entradas podem ser fa­ incidentes de segurança vem aumentando a cada ano e a cilmente burladas; maioria dos sites possui problemas de segurança. Em con­ • As requisições podem ser enviadas pelos usuários em qualquer traste com esses dados, ao consultar a página de FAQ de sequência. Qualquer suposição relativa à ordem como as requisi­ uma aplicação típica da web, o usuário será “tranquilizado” ções serão feitas pelos usuários pode ser burlada; que ela é segura pelo fato do site utilizar a tecnologia SSL. • Não se deve supor que os usuários utilizarão o navegador para Os usuários são frequentemente convidados a verificar interagir com a aplicação. Existem várias ferramentas que permi­ o certificado do site, comprovar os avançados protocolos tem a interação com um servidor, sem a utilização do navegador. criptográficos em uso, e, com isso, é levado a confiar que Essas ferramentas permitem que se façam requisições que não suas informações pessoais estão em boas mãos. Indepen­ seriam possíveis caso fosse utilizado um navegador comum. dentemente de estar ou não utilizando SSL, a maioria das aplicações web ainda contém falhas de segurança, falhas essas que não têm nada a ver com a utilização ou não de SSL. A utilização da tecnologia SSL é importante porque ela protege a integridade do dado durante a transição entre o navegador do usuário e o servidor web. Entretanto, SSL não irá impedir os ataques que comprometem diretamente os servidores ou os clientes de uma aplicação como ocorre na maioria dos ataques. Segue abaixo algumas falhas que não são resolvidas com a utilização de SSL e na Figura 2, sua frequência de ocorrência segundo STUTTARD: • Falha de autenticação: Essa falha ocorre quando as creden­ ciais de acesso ao site não são protegidas adequadamente; Figura 2. Frequência de incidencia das principais falhas na Web • Falha no controle de acesso: Essa falha envolve casos onde a aplicação não consegue proteger o acesso aos seus dados Existem ferramentas que testam automaticamente um conjunto e funcionalidades, permitindo que o invasor veja dados grande de entradas visando encontrar falhas. Alguns exemplos privados de outro usuário e acione comandos aos quais ele de entradas enviadas são: não tem acesso; • Modificação de um valor transmitido em um campo escondido • Injeção SQL: Essa falha ocorre quando a aplicação permite do HTML (hidden); que o invasor injete comandos no banco de dados utilizando, • Modificação de um token da sessão, para roubar a sessão de para isso, a aplicação; outro usuário autenticado; • Cross-Site Scripting: Cross-Site Scripting (XSS) é uma • Remoção de certos parâmetros que são normalmente submeti­ falha em que se permite ao atacante inserir código (ex: Java dos, para explorar falhas de lógica na aplicação; Script ou tags HTML) em páginas Web, visando conseguir • Alterar alguma entrada para tentar fazer um acesso ao banco informações de outros usuários ou acessos restritos; de dados. • Vazamento de informações: Essa falha ocorre quando as aplicações divulgam, sem intenção, informações sobre Nas próximas seções serão apresentadas ferramentas livres e suas configurações, processos internos ou privacidade que podem ser utilizadas para realizar os testes de segurança devido a problemas na aplicação. Isso é muito crítico, pois em aplicações web. a divulgação de informações sobre a versão do servidor de aplicação ou do banco de dados utilizado, por exemplo, Montando seu ambiente de testes com ferramentas livres pode indicar ao invasor quais as falhas às quais a aplicação Alguns ataques a aplicações web podem ser executadas usan­ está vulnerável. do apenas um navegador web padrão. Entretanto, para que o 8 Engenharia de Software Magazine - Testes de segurança
  • 9.
    Validação, Verificação &Teste teste de segurança seja mais efetivo, exige-se a é convidado a encontrá-la e, caso o testador não a encontre, o WebGoat utilização de ferramentas adicionais para que seja permite a solicitação de dicas para a identificação da falha. Caso não se possível encontrar mais falhas de segurança. Mui­ consiga identificar a falha, após dicas de como encontrá-la, é possível tas dessas ferramentas funcionam em conjunto ainda consultar uma descrição da solução. Se mesmo assim o testador não com o navegador, quer como extensões que modi­ entender como encontrar a falha, pode-se consultar vídeos demonstrando ficam a sua funcionalidade, ou como ferramentas passo a passo como identificá-la. O WebGoat é uma aplicação de extrema externas que funcionam ao lado do navegador e necessidade, principalmente para iniciantes nos testes de segurança e que modificam sua interação com o aplicativo alvo. querem aprender a realizar alguns testes. Os exemplos de utilização das Para testar uma aplicação procurando por falhas ferramentas e extensões para navegadores apresentadas nesse artigo foram de segurança é necessário ter domínio sobre essas feitos utilizando-se o WebGoat como aplicação alvo. ferramentas. Nas próximas sessões, serão citadas algumas extensões para o Firefox e ferramentas Navegadores livres utilizadas para auxiliar o testador durante Um navegador web não é exatamente uma ferramenta hacker. Porém, a os testes de segurança. escolha pelo navegador utilizado pode auxiliá-lo no teste a uma aplicação web. O Firefox é, hoje, o segundo navegador mais utilizado do mundo Ferramentas necessárias para a realização compreendendo, segundo alguns estudos, cerca de 25% do mercado e dos testes possui diversas extensões que auxiliam o testador no teste de segurança A primeira ferramenta que o testador deve de uma aplicação web. Abaixo iremos descrever algumas das extensões possuir para realizar os testes, além do próprio que podem auxiliar nessa tarefa. navegador, é um Proxy interceptador. Um Proxy • FoxyProxy: Permite o gerenciamento das configurações de proxy do interceptador permite visualizar e modificar navegador, possibilitando a troca rápida entre os proxies utilizados, todas as mensagens HTTP que passam entre o realização de configurações de Proxies diferentes para URLs diferentes. navegador e a aplicação. Como os Proxies são ferramentas essenciais em testes de aplicações web, Atualmente, além dos Proxies básicos existem suítes que se tornaram muito poderosas por possuírem, além dos Proxies, um conjunto de outras funções projetadas para ajudá-lo no ataque a aplicações web. A segunda categoria principal de ferramenta é conhecida como Web Spider. Essas ferramentas agem solicitando páginas web, analisando os links para outras páginas, e em seguida, solicitando essas páginas. Eles continuam recursivamente até que todo o conteúdo de um site seja descoberto. A terceira categoria principal de ferramenta é o Scanner de aplicação web. Essas ferramentas são concebidas para automatizar muitas das tarefas envolvidas no ataque a uma aplicação web reali­ zando desde o mapeamento inicial até a sondagem por vulnerabilidades. Essas ferramentas fazem uma busca automática por toda a aplicação subme­ tendo dados e analisando as respostas para, com isso, tentar encontrar automaticamente falhas de segurança conhecidas. A quarta categoria principal de ferramenta ne­ cessária, principalmente quando o testador quer realizar alguns testes em seu ambiente, é uma aplicação cheia de falhas onde ele possa fazer alguns experimentos. Essa aplicação existe. O WebGoat é uma aplicação Web Open Source do projeto OWASP. Nessa aplicação as falhas foram inseridas propositalmente e seu principal objetivo é ser um laboratório onde o testador aprende, na prática, as principais vulnerabilidades encontra­ das em aplicações Web. Para cada falha, o usuário Edição 24 - Engenharia de Software Magazine 9
  • 10.
    visto que elespermitem interceptar todas as requisições e Como essas ferramentas funcionam respostas e modificá-las, e, além disso, muitas vezes utiliza- Cada suíte de testes integrados contém várias ferramentas se mais de um Proxy durante o teste, essa extensão é impor­ complementares que compartilham informações sobre a tante para agilizar esse processo de seleção e modificação aplicação alvo. Normalmente, o testador interage com a do Proxy utilizado; aplicação de uma forma normal através do seu navegador, • Tamper Data: extensão do Firefox que permite interceptar e as ferramentas de acompanhamento monitoram os re­ e modificar as requisições HTTP enviadas e recebidas pelo sultados dos pedidos e das respostas, armazenando todas navegador; as informações pertinentes sobre a aplicação de destino e • LiveHTTPHeaders: É uma extensão do Firefox que permite provendo inúmeras funções úteis. Cada suíte dispõe dos visualizar os cabeçalhos HTTP enviados ao servidor web seguintes componentes principais: ou os que são recebidos do servidor; • Um Proxy Interceptador; • Edit Cookies: permite adicionar e modificar valores e • Uma aplicação spider; atributos dos cookies; • Várias funções partilhadas e utilitárias. • CookieWatcher: permite que o valor do cookie seja moni­ torado na barra de status. Proxy Interceptador O Proxy Interceptador fica no centro da suíte de ferramen­ Muitas vezes é possível modificar o seu navegador para tas e é o único componente realmente essencial na suíte. ajudá-lo no ataque de uma aplicação: Para utilizá-lo, deve-se configurar o navegador para usar o • Se a aplicação não utilizar cookies para armazenar tokens Proxy escolhido como servidor Proxy em uma porta local de sessão, pode-se utilizar vários processos do mesmo na­ na própria máquina. O Proxy é, então, configurado para vegador, cada um com uma sessão diferente sobre o pedido. escutar essa porta e receber todos os pedidos emitidos pelo Por exemplo, quando estiver testando o controle de acesso, navegador e repassá-lo ao destino. Como ele tem acesso aos pode-se utilizar uma instância do navegador logada com um dois sentidos da mensagem entre o navegador e o servidor usuário com mais privilégio e outra logada com uma sessão web e age como um interceptador, ele consegue barrar cada com um usuário com poucos previlégios e assim, testar rapi­ mensagem para revisão e modificação pelo usuário, para damentte a aplicação com poucos pedidos de visitas; só então encaminhá-la ao destino. • É possível limpar os dados que um navegador guarda sobre alguma aplicação (principalmente dentro de cookies Outras características comuns presentes nessas e cache) de forma a iniciar novamente com o pedido como suítes um novo usuário; Além de sua função principal de permitir a interceptação • Pode-se acionar o botão direito do mouse em um link e e alteração de requisições e respostas, os Proxies possuem abri-lo em uma nova janela ou guia para explorar uma fun­ uma riqueza de outros recursos para ajudar nos testes de cionalidade que chama a atenção do invasor por aparentar segurança de aplicações web. Entre os recursos, incluem- apresentar falhas de segurança, mantendo a sua posição se os seguintes: anterior para continuar trabalhando de forma sistemática • É permitida a criação de regras de interceptação, através da aplicação. possibilitando que as mensagens sejam intercepta­ das para revisão ou silenciosamente retransmitidas, Com essas extensões, os testes de segurança poderão ser com base em critérios definidos pelo testador como realizados com muito mais facilidade. Apesar disso, para host de destino, url, método, tipo de recurso, código realizar testes mais completos, é necessária a utilização de resposta, ou o aparecimento de determinadas ex­ de mais ferramentas, que serão descritas nas próximas pressões, conforme pode ser visualizado na Figura 3. sessões. Em uma aplicação típica, muitas requisições e respostas são de pouco interesse para o testador, e esta função permite Outras ferramentas úteis configurar o Proxy para interceptar apenas as mensagens Após o navegador web, o item mais útil no seu conjunto que lhe são interessantes; de ferramentas ao atacar uma aplicação web é um Proxy • Um histórico detalhado de todas as requisições e respos­ Interceptador. No começo da Web os Proxies Interceptador tas, o que permite que mensagens antigas sejam revistas e eram aplicações que proviam funcionalidades básicas. Nos analisadas posteriormente; últimos anos, os Proxies Interceptador expandiram-se para • Regras para a modificação dinâmica do conteúdo das um grande número de suítes, cada uma contendo muitas requisições e respostas. Esta função pode ser útil em ferramentas interconectadas desenvolvidas para auxiliar inúmeras situações, por exemplo, para reescrever o valor em todas as tarefas envolvidas no ataque a uma aplicação de um cookie ou outro parâmetro em todos os pedidos web. Todas as funcionalidades referentes a Proxies Inter­ visando remover diretivas de cache, para simular um ceptador citadas no restante desse artigo estão presentes navegador específico modificando o cabeçalho e assim no WebScarab, uma ferramenta livre do projeto Owasp. sucessivamente; 10 Engenharia de Software Magazine - Testes de segurança
  • 11.
    Validação, Verificação &Teste Existem algumas ferramentas que varrem toda a aplicação procurando por falhas conhecidas e, após a varredura, emitem um relatório com os pontos suspeitos de possuírem falhas de segurança. Os recursos a seguir estão presentes na ferramenta Paros, que permite a execução de uma varredura na aplicação à procura de falhas de segurança: • Permite varreduras automatizadas para detectar vulnerabili­ dades conhecidas. O Paros envia um conjunto de sequências de ataque e analisa as respostas para identificar vulnerabilidades conhecidas. A Figura 5 mostra o resultado de uma Varredura feita utilizando esta ferramenta. Verifique na figura que é possível identificar a URL onde se suspeita que exista a falha de segurança e os parâmetros utilizados pelo Paros. Figura 3. Tela do WebScarab que permite a configuração das URLs que serão interceptadas • Acesso a funcionalidades de Proxy que permitem que se nave­ gue no histórico de requisições e respostas, possibilitando, com isso, que o testador identifique requisições suspeitas de possuírem problemas de segurança e reemita o pedido, quantas vezes for preciso e, caso necessário, faça modificações que permitam iden­ tificar possíveis falhas, conforme pode ser visto na Figura 4; Figura 5. Resultado de um scan na aplicação WebGoat realizado pelo Paros • Permite o controle das sequências de ataque e formas de incorporá-las às requisições. Possui ainda um histórico de todas as requisições permitindo a revisão dos resultados para a identificação de todas as respostas incomuns ou anômalas que merecem maior investigação; • Funções para extração de dados úteis a partir das respostas do aplicativo - por exemplo, analisando os campos de usuário e senha em uma página de detalhes. Isso pode ser útil quando Figura 4. O WebScarab permite a visualização do Histórico das você está explorando vulnerabilidades diversas, incluindo requisições realizadas falhas na sessão e controles de acesso; • Funcionalidades para o mapeamento completo de toda a apli­ • Funções para analisar cookies e outros tokens para qualquer cação, funcionalidades essas conhecidas como Web Spiders. Os sequência. Web Spiders agem solicitando páginas web, analisando os links para outras páginas, e em seguida, solicitando essas páginas. Uma ressalva é que, todas as possíveis falhas apontadas Eles continuam recursivamente até que todo o conteúdo de pelo Paros devem ser investigadas, pois após uma análise, um site seja descoberto; descobre-se que muitas delas não são falhas. Esse excesso • Funções que permitem revelar campos e comandos de falsos positivos acaba fazendo com que o testador perca escondidos. muito tempo analisando os possíveis defeitos. O autor deste artigo desconhece, até a presente data, uma ferramenta livre Scanners de aplicação que faça a varredura de uma aplicação, procurando por Embora seja possível realizar um teste bem-sucedido falhas de segurança conhecidas, e que seja tão boa quanto usando apenas técnicas manuais, para se tornar um bom alguns scanners proprietários disponíveis no mercado. Ape­ testador, é necessário fazer uso de automação, para aumentar sar de falsos positivos ocorrerem também nas ferramentas a rapidez e eficácia dos testes. comerciais, ocorrem em uma escala bem menor do que no Edição 24 - Engenharia de Software Magazine 11
  • 12.
    Paros, ocasionando umaeconomia de tempo do testador na Funcionalidades adicionais análise de falhas. Além de suas ferramentas principais, as suítes de teste de Além disso, segundo SUTO, autor do artigo Analyzing the Accu- segurança normalmente fornecem uma vasta gama de outras racy and Time Costs of Web Application Security Scanners, mesmo as funcionalidades que visam atender a necessidades específicas ferramentas proprietárias chegam a não detectar, dependendo que surgem quando se está testando a segurança de uma apli­ da ferramenta utilizada, 66% das falhas presentes em um site, cação web, e que permitam a outras ferramentas trabalharem o que faz com que não se possa confiar cegamente nessas ferra­ em situações inusitadas. Os recursos abaixo estão disponíveis mentas e torna importante o papel do testador na identificação no WebScarab: desses defeitos não identificados pelos Web Scanners. • Análise da estrutura de mensagens HTTP, incluindo análise e modificação de cabeçalhos e parâmetros do pedido, conforme Requisições manuais pode ser visto na Figura 7; As suítes livres, como o WebScarab, permitem ainda facilida­ des para que o usuário emita uma única requisição e visualize a sua resposta. Embora simples, esta função muitas vezes é extremamente útil quando se está investigando uma possível vulnerabilidade e, para isso, pode existir a necessidade de ree­ ditar a mesma requisição manualmente várias vezes, aprimo­ rando elementos da requisição para determinar o efeito sobre o comportamento da aplicação. Logicamente, com uma ferramenta com as funções integradas você pode recuperar rapidamente uma requisição interessante de outro componente utilizado no teste (Proxy, spider, etc.) para investigação manual. Veja a Figura 6 para um exemplo de uma tela do WebScarab onde é possível realizar a modificação de uma requisição. Figura 7. O WebScarab permite a interceptação e modificação de pedidos e respostas • Renderização de conteúdo das respostas HTML, sendo pos­ sível visualizar a página da mesma forma que ela será exibida no navegador web (Aba HTML da Figura 7); • Capacidade de exibir e editar mensagens de texto e de forma hexadecimal (Aba Hex da Figura 7); • Funções de pesquisa por todas as requisições e respostas; • Atualização automática do cabeçalho HTTP, para mantê- lo consistente com qualquer edição manual do conteúdo da mensagem; • Codificadores e decodificadores para vários sistemas, per­ mitindo a rápida análise dos dados da aplicação em cookies e outros parâmetros; • O suporte para utilização de outros Proxies, que não são os Figura 6. Reedição manual de uma requisição integrados na aplicação, permitindo-lhe encadear ferramentas diferentes ou acessar um aplicativo através do Proxy usado por O WebScarab possui as seguintes funcionalidades relacionadas sua organização ou ISP; ao envio de requisições manuais: • Ferramenta de apoio a métodos de autenticação de HTTP, • Integração com outros componentes do conjunto, e a pos­ permitindo-lhe utilizar todos os recursos da suíte em ambien­ sibilidade de submeter qualquer requisição de e para outros tes onde estes são utilizados, tais como LANs corporativas; componentes para investigação posterior; • Suporte para os certificados de cliente SSL, permitindo-lhe • Histórico de todos os pedidos e respostas, mantendo um re­ testar aplicações que utilizam essa tecnologia; gistro completo de todas as requisições manuais para revisão • Manipulação das características do HTTP, como a codificação posterior, e possibilitando que uma requisição modificada seja gzip, codificação de transferência em partes, e status 100 de recuperada para análise posterior. respostas provisórias; 12 Engenharia de Software Magazine - Testes de segurança
  • 13.
    Validação, Verificação &Teste • Extensibilidade, permitindo que a funcionalidade incorpo­ as ferramentas livres ainda estão muito distantes de serem rada seja alterada e estendida de forma arbitrária por código tão boas quanto as ferramentas comerciais disponíveis no de terceiros; mercado, já que, como eles encontram muitos falsos positi­ • Salvamento das configurações utilizadas na ferramenta, vos, acabam desperdiçando o tempo do testador na análise permitindo que uma configuração específica seja reutilizada de falhas que não existem. na próxima execução da suíte; Por fim, pôde-se perceber que o bom entendimento de • O WebScarab é independente de plataforma, permitindo que como utilizar as ferramentas utilizadas é de extrema im­ seja executado em todos os sistemas operacionais populares. portância para a melhoria da segurança dos Web Sites, visto que mesmo os melhores Web Scanners proprietários podem Conclusão não encontrar a maioria dos defeitos de segurança presente Cada uma das ferramentas apresentadas neste artigo possui em uma aplicação Web. funcionalidades importantes e que, juntas, permitem ao testa­ dor a realização de testes de segurança de forma satisfatória. Todas são eficazes e muito populares entre a comunidade que utiliza softwares livres para testar a segurança de aplicativos Feedback Dê seu feedback sobre esta edição! eu na web. Com isso, a escolha de qual suíte será utilizada é uma s Dê questão de preferência pessoal. Recomenda-se que seja feito A Engenharia de Software Magazine tem que ser feita ao seu gosto. sobre e o download das ferramentas descritas para que o próprio Para isso, precisamos saber o que você, leitor, acha da revista! s ta edição testador escolha qual ferramenta utilizar em seus testes. Dê seu voto sobre este artigo, através do link: Entretanto, apesar das ferramentas livres terem evoluído www.devmedia.com.br/esmag/feedback bastante, pode-se perceber que em relação aos Web Scanners, Referências e links STUTTARD, Dafydd, PINTO, Marcus. The Web Application Hacker’s Handbook: Discovering and Projeto Owasp Exploiting Security Flaws. Wiley Publishing, 2007. http://www.owasp.org MCGRAW, Gary, Software Security: Building Security In. Addison Wesley Professional, 2006. WebScarab http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project Testing Experience: The Magazine for Professional Testers, Security Testing, Junho de 2009. WebGoat SUTO, Larry. Analyzing the Accuracy and Time Costs of Web Application Security Scanners. São http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project Francisco, Fevereiro de 2010. Paros - for web application security assessment Widespread security flaws revealed in online banks http://www.parosproxy.org/index.shtml http://www.ur.umich.edu/0708/Jul28_08/02.php WhiteHat: Web Security Vulnerabilities Found on Most Sites http://www.eweek.com/c/a/Security/WhiteHat-Web-Security-Vulnerabilites-Found-on-Most- Sites707138 Edição 24 - Engenharia de Software Magazine 13
  • 14.
    Engenharia Nesta seção você encontra artigos voltados para testes, processo, modelos, documentação, entre outros Gerência de Configuração Definições Iniciais, Ferramentas e Processo De que se trata o artigo? Neste artigo serão mostrados inicialmente aspectos relevantes da gerência de configuração. Na segun- Alberto Boller Filho Marcelo Nascimento Costa da parte do artigo, será apresentada a aplicação da alberto.boller@gmail.com mnc@kalisoftware.com Formado em Tecnólogo Análise de Sistemas pelo gerência de configuração dentro dos principais mo- Mestre em Engenharia de Sistemas e Computação Centro Universitário Instituto Metodista Bennet. pela COPPE/UFRJ (avaliada como a melhor pós- delos de maturidade e as vantagens de se utilizar Possui mais de 30 anos de experiência em infor- graduação em computação do país). Bacharel em tais ferramentas, através de um estudo de caso de mática. Possui especialização em administração Ciência da Computação pela UFPA. Professor dos implementação em uma empresa hipotética. de redes Linux Conectiva, segurança de redes cursos de graduação em computação e adminis- Linux Conectiva, administração de redes Windo- tração do Instituto Metodista Bennett. Autor de ws NT e Windows Server 2003, programação de diversos artigos científicos sobre Engenharia de Para que serve? aplicações cliente servidor avançada em Delphi, Software publicados em revistas e conferências Este trabalho tem como intuito servir como um mate- programação RPGII, programação COBOL, System renomadas, dentro e fora do país. rial de apoio para aqueles que desejam implementar Administrator NOTES, Application Development gerência de configuração em uma organização de- NOTES. Atualmente é Gerente de informática na Marcos Kalinowski clínica de diagnóstico por imagens “CEPEM “ Cen- senvolvedora de software, usando como ferramen- mk@kalisoftware.com tro de Estudos e Pesquisa da Mulher”. Doutorando e Mestre em Engenharia de Software tas de controle de mudanças e controle de versões, o pela COPPE/UFRJ (avaliada como a melhor pós- Mantis e o Subversion respectivamente. Rodrigo Oliveira Spínola graduação em computação do país), com ênfase rodrigo@sqlmagazine.com.br em Validação, Verificação e Testes de Software e Em que situação o tema é útil? Doutorando e Mestre em Engenharia de Software Melhoria de Processos. Bacharel em Ciência da Para qualquer empresa de desenvolvimento de pela COPPE/UFRJ (avaliada como a melhor pós- Computação pela UFRJ. Professor do curso de pós- software que tenham interesse em aumentar o graduação em computação do país). Criador do graduação e-IS Expert da UFRJ e Coordenador do projeto e editor chefe da revista Engenharia de curso de Engenharia da Computação da UVA RJ. controle e confiabilidade nos artefatos gerados Software Magazine. Autor de diversos artigos pela equipe de desenvolvimento ao longo de C científicos sobre Engenharia de Software publica- om um mercado cada vez mais um processo de desenvolvimento de software. dos em revistas e conferências renomadas, dentro exigente, as empresas que fabri­ e fora do país. Experiência de participação em cam software tem revisto seus diversos projetos de consultoria para diferentes empresas tendo atuado com gerência de projetos, processos de construção com o intuito de software voltadas para o controle tem requisitos e testes de software. Implementador aumentar a qualidade de seus produtos sido elaboradas uma vez que um pro­ certificado do MPS.BR, tendo também experiência e também sua produtividade. Diversas jeto de software, ao longo do seu ciclo atuando junto a empresas certificadas CMMI. metodologias de desenvolvimento de de vida, tem uma grande quantidade 14 Engenharia de Software Magazine - Gerência de Configuração
  • 15.
    Projeto de itens deinformação tais como documentos, código-fonte, A primeira lei da engenharia de sistemas diz: dados, manuais e outros, produzidos e até modificados, pelos “Independente de onde você está no ciclo de vida de um sistema, o mais diversos motivos. sistema vai se modificar e o desejo de modificá-lo vai persistir ao longo de Para que a qualidade do software seja garantida, em fun­ todo o ciclo de vida”. Bersoff (1980 apud Pressman, 2006, p. 600) ção destas modificações, é necessário que se faça uso da Gerência de Configuração de Software (GCS). A Gerência Produtos de software normalmente envolvem quantidades de Configuração de Software tem como objetivo gerenciar significativas de artefatos que são manuseados por diversas e controlar a evolução de um software através do controle pessoas envolvidas em seu projeto. formal de versão e solicitação de mudanças. É uma forma Assim sendo, a possibilidade de introdução de defeitos au­ sistemática e organizada de controlar as modificações de menta à medida que alterações são efetuadas sem uma analise um software tornando possível manter sua integridade ao antes da sua execução, sem o registro formal antes da sua imple­ longo do tempo. A quantidade de itens que podem estar mentação, sem a comunicação às pessoas que necessitam saber sob controle da GCS e os níveis de controle exigidos sobre delas ou ainda sem um controle que vise melhorar a qualidade estes itens irá variar de empresa para empresa ou mesmo e reduzir os erros. de projeto para projeto. Sendo assim, o uso desta prática em Existem quatro fontes fundamentais de modificações de conformidade com modelos de maturidade mantidos por en­ software: tidades que possuam credibilidade nacional e internacional, • Novas condições de negócio e/ou mercado, modificam regras e também o uso de ferramentas adequadas que garantam de negócio; a qualidade deste processo, é fundamental para que uma • Novas necessidades do cliente exigem modificações de empresa obtenha êxito e reconhecimento. funcionalidades; Para empresas de grande porte, isto não chega a ser um • Reorganização e/ou crescimento/diminuição do negócio; grande problema pois normalmente se dispõem de capital • Restrições de orçamento ou cronograma, causando redefinição e pessoal qualificado para manter tais práticas. Entretanto, do sistema; quando voltamos a olhar para as pequenas empresas, o cenário é exatamente o oposto. As dificuldades e o custo Conceitos e Terminologias envolvidos para se adotar um modelo de gestão, treinar pes­ A Gerência de Configuração de Software (GCS) ou Software soal, adquirir ferramentas que apóiem a pratica de GCS, e Configuration Management (SCM) é uma atividade abrangente ainda obter certificação em um determinado nível de modelo que ocorre ao longo de todo o ciclo de vida de um software e de maturidade, de uma entidade reconhecida, pode levar que gerencia e controla sua evolução, através do controle de uma pequena empresa a desistir rapidamente da adoção de versões e solicitações de mudanças, permitindo que os diver­ um processo de GCS com qualidade, e como conseqüência, sos envolvidos na sua criação e manutenção tenham acesso ao perder em competitividade para outras empresas. Este artigo histórico destas modificações, fornecendo-lhes subsídios para foi feito com o foco voltado para estas empresas. o entendimento do sistema na sua forma atual, e também nas Neste contexto, o objetivo deste artigo é mostrar uma solu­ suas formas anteriores. ção especifica, de boa qualidade e baixo custo, que atenda As atividades de GCS incluem: as exigências dos modelos de maturidade e que possa ser • Identificar modificações; utilizada para implementar a Gerência de Configuração de • Controlar modificações; Software em pequenas empresas. • Garantir a implementação adequada das modificações; Sob esta perspectiva, será apresentada uma revisão bi­ • Relatar as modificações a outros que possam ter interesse. bliográfica sobre GCS, sua aplicação dentro dos modelos de maturidade CMMI e MPS e uma solução especifica uti­ Segundo Pressman (2006, p. 599), diferentemente da ativida­ lizando as ferramentas Mantis e Subversion, através de um de de suporte de software, que ocorre depois que o software estudo de caso de uma empresa fictícia de pequeno porte foi entregue ao cliente, a GCS é um conjunto de atividades de que atenda as exigências do modelo de maturidade MPS, e acompanhamento e controle que começam quando o projeto que possa servir como alternativa para empresas reais que de engenharia de software tem início e só terminam quando o estejam buscando a implementação do processo de GCS. software é retirado de operação. Serão apresentados também os aspectos de instalação e A Gerência de Configuração de Software tem especial impor­ configuração das ferramentas, a fim de facilitar àqueles tância na garantia da qualidade do software e no apoio a gestão que forem utilizá-las. de projetos, sendo imprescindível sua aplicação nas empresas que desejam obter a certificação do Capability Maturity Model Integra­ Gerência de Configuração tion (CMMI) nível 2 ou na obtenção da certificação do modelo para Ao longo do ciclo de vida de um software, diversas modifi­ Melhoria de Processo do Software Brasileiro (MPS-BR) nível F. cações podem ocorrer em seu projeto original. Os motivos Segundo Pressman (2006 p. 606), o processo de gestão de e origens destas modificações podem ser os mais variados configuração de software define uma série de tarefas que têm possíveis e podem ocorrer em qualquer época. quatro objetivos principais: Edição 24 - Engenharia de Software Magazine 15
  • 16.
    • Identificar todosos itens de configuração; efetivo. Fornece as funções óbvias de um sistema de gestão • Gerir modificações em um ou mais destes itens; de banco de dados, mas, além disso executa ou propicia as • Facilitar a construção de diferentes versões de um mesmo seguintes funções: produto; • Integridade de dados – Valida entradas no repositório, • Garantir que a qualidade do software seja mantida a medida garante consistência entre os ICS’s relacionados, executa mo­ que a configuração evolui ao longo do tempo. dificações em cascata quando uma modificação em um objeto exige modificações em objetos a ele relacionados; Para podermos entender como estas tarefas são executadas, • Compartilhamento de informações – Fornece mecanismo devemos conhecer alguns conceitos que são fundamentais para compartilhar a informação entre vários desenvolvedores e para a aplicação de GCS. ferramentas, controla o acesso aos ICS’s por diferentes usuários através de política de bloqueio e desbloqueio de modo que as Configuração de Software modificações não sejam sobrepostas umas as outras; Diversos elementos são gerados como produto de um pro­ • Integração de ferramenta – Provê uma estrutura de dados cesso de software. Estes elementos podem ser: que permite acesso à várias ferramentas de engenharia de • Programas de computador (tanto na forma de código fonte software; como executável); • Integração de dados – Fornece funções de banco de dados • Documentos que podem descrever programas, procedi­ que permitem que várias tarefas de GCS sejam executadas em mentos regras de negócio etc. (Documentação técnica e de um ou mais ICS’s; usuário final); • Imposição de metodologia – Define um modelo entidade • Estrutura de dados que podem estar contidos em programas relacionamento que implica um modelo de processo especifico ou externos a ele; de engenharia de software. O relacionamento entre objetos definem um conjunto de passos a ser seguido para construir A este conjunto de elementos, que compreende toda a in­ o conteúdo do repositório; formação produzida no processo de software, chamamos de • Padronização de documentação – Normalização para a “Configuração de Software”. criação de documentos de engenharia de software. Itens de Configuração de Software – ICS Segundo Molinari (2007 p. 44), um item de configuração é o menor item de controle num processo de GCS. Um item de configuração de Software (ICS) ou Software Con­ figuration Item (SCI) é cada elemento criado durante o processo de engenharia de software, ou que para este processo seja necessário. Pode ser um arquivo, uma aplicação corporativa, uma parte de um documento, uma seqüência de casos de teste, um hardware ou um componente de programa. Além dos Figura 1. Classes e instâncias de um item de configuração ICS´s gerados no processo de engenharia de software, também poderão ser considerados como ICS’s ferramentas de software Um repositório tem que ser capaz de manter ICS’s relaciona­ como editores, compiladores, navegadores e outras ferramentas dos a diversas versões do software e ainda fornecer mecanis­ que forem necessárias à correta geração do software. mos para montar esses ICS’s em uma configuração especifica Os ICS’s são identificados de maneira única e podem estar da versão, garantindo assim a gestão efetiva das entregas do relacionados a outros ICS’s e sua evolução é passível de ras­ produto e permitindo aos desenvolvedores voltar a versões treamento. O controle da Gerência de Configuração será feito anteriores. Precisa ser capaz de controlar variados tipos de sobre estes itens e serão mantidas todas as informações a seu ICS’s incluindo textos, gráficos, mapas de bits e outros mais respeito. Diversas versões de um mesmo ICS podem existir complexos. como produto das modificações efetuadas no dia-a-dia. Além disso, o repositório deve ser capaz de guardar informa­ Molinari (2007 p. 44) faz uma analogia interessante ao con­ ções sobre baselines e pistas de auditoria com informações sobre ceito de classes em orientação a objetos (OO) quando diz que quando, por que, e por quem as modificações foram feitas. o item está para uma “classe” em OO assim como as versões Estas informações são chamadas de metadados, e são definidas deste item estão para as “instâncias” da classe em questão em um metamodelo que determina como as informações são conforme mostrado na Figura 1. armazenadas no repositório, como ter acesso a elas, como podem ser vistas pelos engenheiros de software, e como manter a sua Repositório integridade e segurança. Segundo Forte (1989 apud Pressman, 2006, p. 604), o repo­ Além de manter as informações sobre os ICS’s, o repositório sitório é o conjunto de mecanismos e estruturas que per­ deve ser capaz de armazená-los fisicamente em um esquema mite a uma equipe de software gerir modificação de modo de bibliotecas. 16 Engenharia de Software Magazine - Gerência de Configuração
  • 17.
    Projeto OsICS’s são retirados e inseridos nos repositórios, através • Durante cada fase, a modificação de uma configuração-base das seguintes operações: somente pode ser feita de forma controlada, mediante um • LOCK: Garante que apenas um usuário detém o acesso para processo bem definido; alterar um determinado ICS. Apesar de resolver o problema • Ao ser estabelecida, cada baseline incorpora integralmente de atualização simultânea, o lock serializa o trabalho dos a anterior. desenvolvedores. • O estabelecimento de cada baseline somente é realizado • CHECK-OUT: Recupera a última versão de um item de após ser aprovada por procedimentos de consistência interna, configuração guardado no repositório, copiando-o para a área verificação e validação; de trabalho do desenvolvedor. • CHECK-IN: Insere ou atualiza um item de configuração Na Figura 2 vemos uma representação de baselines adaptada no repositório, incrementando a versão do ICS, e fazendo o de Molinari (2007, p 56). registro das informações de mudança. Identificação de ICS’s A identificação dos ICs é uma área de extrema importância dentro da Gerência de Configuração de Software. Sem uma identificação correta de um item, é impossível gerenciar este processo. Cada ICS deve ser identificado através de características Figura 2. Entendendo um baseline distintas que o caracterizam unicamente. Estas características podem ser um nome, uma descrição, uma lista de recursos etc. Controle de Versão É necessário que cada organização defina suas convenções de Segundo Pressman (2006, p. 608), controle de versões identificação. combina procedimentos e ferramentas para gerir diferentes versões de objetos de configuração que são criados durante Baseline o processo de software. Um sistema de controle de versão Um baseline pode ser descrito como a situação de uma cole­ implementa ou está diretamente integrado com quatro ca­ ção de ICS’s similares em um momento especifico do ciclo de pacidades principais: vida de um software que foram aprovados e armazenados em • Um banco de dados de projeto (repositório) que guarda uma biblioteca controlada. Pode ser descrito também como a todos os objetos de configuração relevantes; conexão de um item de configuração com um determinado • Uma capacidade de gestão de versão que guarda todas as marco no projeto (milestone). Um baseline pode ser visto como versões de um objeto de configuração; um conjunto de itens de configuração identificados e liberados • Uma facilidade de construir que permite ao engenheiro de para uso, independente de suas versões. software coletar todos os objetos de configuração relevantes É importante identificar e agrupar estes ICS’s dentro dos e construir uma versão especifica do software; baselines apropriados pois desta forma, cria-se uma estrutura • Capacidade de acompanhamento de tópicos (também cha­ que facilita o rastreamento de mudanças à estes ICS’s. mado de acompanhamento de bugs). Em cada fase do processo de desenvolvimento, um conjunto bem definido de itens de configuração deve ser estabelecido. Segundo Molinari (2007, p. 168), alguns colocam que a prin­ Tal conjunto representa um estágio do desenvolvimento, o qual cipal missão de um sistema de controle de versões é permitir é passível de modificações apenas mediante um mecanismo a edição colaborativa e o compartilhamento de dados, outros formal de alterações. A este conjunto é dado o nome de base­ dizem que o sistema de controle de versões rastreia e controla lines, ou configurações base do sistema. todos os artefatos do projeto e desse modo consegue coorde­ Em princípio, baselines poderiam ser estabelecidas em qual­ nar o trabalho paralelo de desenvolvedores. quer ponto do desenvolvimento. Entretanto, a grande vanta­ Ainda segundo Molinari (2007, p.168), independente do que gem do conceito está em se fazer coincidir o estabelecimento de cada um pensa sobre controle de versões, algumas das suas baselines com os finais de fase do ciclo de vida do produto. características perceptíveis são: O desenvolvimento com configurações base pode, então, ser • Mantém e disponibiliza cada versão já produzida de cada resumido nos seguintes pontos: item do projeto; • Caracterização do ciclo de vida, identificando-se as fases • Possui mecanismos para gerenciar diferentes ramos de pelas quais o desenvolvimento do software irá passar; desenvolvimento possibilitando a existência de diferentes • Definição do conjunto de baselines, estabelecendo-se quais versões de maneira simultânea; serão os ICS’s que a irão compor; • Estabelece uma política de sincronização de mudanças que • Estabelecer o marco o qual a baseline irá representar. Uma evita a sobreposição de mudanças; nova baseline é estabelecida no final de cada fase do ciclo de • Fornece um histórico completo de alterações sobre cada vida do software; item do projeto. Edição 24 - Engenharia de Software Magazine 17
  • 18.
    O sistema decontrole de versões é o responsável por manter as diversas versões dos ICS’s e faz isso através de um esquema de arquivos e diretórios presentes no repositório, registrando não só as alterações realizadas em cada arquivo mas também na estrutura do diretório em si. O repositório evolui, junto com o projeto guardando as múlti­ plas versões que o compõe organizadas em forma de revisões. As revisões são as situações estáticas de todos os arquivos do projeto em um determinado instante de tempo. Em empresas de grande porte, onde existem vários profissio­ Figura 3. Branch de desenvolvimento nais trabalhando concorrentemente nos mesmos arquivos, faz-se necessário uma política para ordenar e integrar estas alterações, Merge a fim de evitar a perda de um trabalho ocasionada quando uma Em projetos onde existe um grande número de pessoas en­ pessoa sobrescreve o trabalho de outra. volvidas, é comum que elas possuam uma cópia de trabalho da Os sistemas de controle de versão implementam esta política, linha principal de desenvolvimento. Neste contexto, o conceito assegurando que os desenvolvedores não trabalhem diretamen­ de merge é também uma parte fundamental do controle de te nos arquivos do repositório, mas sim em cópias de trabalho versões. O Merge faz a fusão de dois arquivos que estão sendo destes arquivos em suas próprias máquinas. Isto permite que alterados simultaneamente por desenvolvedores diferentes um desenvolvedor faça seu trabalho de forma independente e garantindo que a versão final contenha todas as alterações. sem interferir no trabalho de outro. Após terminado o trabalho, Quando isso não é possível, mantém apenas a última versão o arquivo deve ser colocado novamente no repositório e para que guardada e emite uma mensagem de “arquivo fora de data” alterações não sejam inadvertidamente sobrepostas, o sistema para que as diferenças sejam resolvidas com intervenção de controle de versões pode fazer uso das seguintes políticas humana. Em alterações demoradas, onde normalmente é de versionamento: utilizada a técnica de branch, é recomendável que se façam • Trava-Modifica-Destrava: Apenas uma pessoa por vez detém merges, periodicamente entre a linha principal e a ramificação, o direito de alterar um determinado arquivo. O sistema trava o para que no final não fique inviável fazer o merge devido ao arquivo quando uma pessoa retira uma cópia para manutenção grande número de conflitos gerados entre as diferenças das e só libera a cópia para edição à outra pessoa, quando a primeira diversas versões. publica sua nova versão. Esta política é limitada e pode causar problemas administrativos e forçar a serialização do trabalho, Tags entretanto, é a solução indicada para organizações que neces­ Um outro tipo de controle de versão são as tags. Tags são sitam de um alto grau de formalização. como fotografias de um projeto, em um determinado instante • Copia-Modifica-Resolve: Não utiliza travamento de arquivos. do tempo. São rótulos associados a um conjunto de arquivos Nesta política, cada desenvolvedor trabalha de forma indepen­ usados para denominar um projeto ou uma nova versão, e que dente em sua cópia de trabalho, e ao final, as alterações são rotulam estes arquivos. As tags nas versões de um conjunto mescladas no repositório, formando a versão final. Esta política de itens de configuração, existente em diversos sistemas de pode parecer caótica, mas na prática funciona bem, devido ao controle de versões, pode ser utilizado para implementar o baixo índice de conflitos. Os conflitos são causados na maioria conceito de baseline. das vezes, por falta de comunicação entre os desenvolvedores. Controle de Modificação Branch Mudanças são inevitáveis. Todo produto de software sofre Branching (ou ramificação em português) é uma parte funda­ mudanças durante o seu ciclo de vida, seja por erro de cons­ mental do controle de versões. O conceito de branching reside trução, ou por necessidade de mudanças solicitadas pelos em se iniciar uma nova linha de desenvolvimento em paralelo clientes. Em projetos de grande porte, fazer modificações sem à uma principal já existente. um esquema formal de controle pode levar ao caos. Alguns Esta técnica é extremamente útil em situações onde temos dos problemas que podem ser causados em projetos devido a que fazer grandes alterações em objetos de configuração e que mudanças não controladas são: provavelmente levarão muito tempo, sem contudo afetar a linha • Aumento do custo do projeto; principal de manutenção do sistema. Nesta situação, cria-se uma • Atrasos em entregas planejadas; segunda cópia do objeto em questão e trabalha-se em paralelo • Impacto em outros objetos de configuração; à linha principal. Ao longo do tempo, as manutenções feitas na • Degradação da qualidade do software; linha principal poderão ser incorporadas na ramificação para • Retrabalho. que defeitos encontrados na cópia original possam ser conser­ tados também na ramificação. A Figura 3 demonstra como é a Controle de modificações podem incluir procedimentos técnica de branching ao longo do tempo. humanos e também o uso de ferramentas automatizadas, e 18 Engenharia de Software Magazine - Gerência de Configuração
  • 19.
    Projeto seu objetivo écontrolar estas mudanças e manter informações • Revisões técnicas formais; sobre os pedidos de mudança, nos produtos e as implementa­ • Auditoria de configuração de software. ções realizadas em função destas mudanças. Informações do tipo quem, quando, por que e o que foi mu­ A revisão técnica tem como foco a correção técnica do ICS dado, em um item de configuração, são guardadas para que que foi modificado a partir de uma requisição. Revisores seja possível haver uma rastreabilidade entre suas versões avaliam o ICS para determinar se o mesmo é consistente. anteriores e posteriores. Revisões técnicas formais normalmente são feitas para todas O processo de controle de mudanças começa quando o clien­ as modificações, exceto as mais triviais. te emite um pedido de comunicação. Este pedido passa pela A auditoria de configuração de software tem como objetivo análise de uma Comissão de Controle de Modificações (do complementar a revisão técnica formal e trata dos seguintes inglês Change Control Board – CCB), que é responsável pela aspectos: sua aprovação ou não. É gerada então uma ordem de modifi­ • Verifica se a modificação técnica especificada foi realizada e cação de engenharia (Engineering Change Order – ECO) pra as se foi incorporada alguma modificação adicional; modificações aprovadas. O ICS é retirado do repositório para • Verifica se uma revisão técnica formal foi feita para avaliar uma área de trabalho exclusiva do profissional, que irá executar a correção técnica; as mudanças. As mudanças são executadas, as atividades de • Verifica se o processo de software foi seguido; SQA são aplicadas, e os ICS’s modificados são introduzidos • Verifica se constam anotados no ICS modificado, dados de no repositório com os mecanismos adequados de controle rastreabilidade tais como data da modificação, autor, nº de de versão. Controles para acesso aos ICS’s pelos engenheiros requisição etc.; e controles de sincronização de modificações paralelas por • Verifica se os procedimentos de GCS para registrar e relatar pessoas diferentes são usados nesta etapa. a modificação, foram seguidos; A Figura 4 esboça o processo formal de controle de modifi­ • Verifica se todos os ICS’s relacionados foram atualizados de cações segundo Pressman (2006, p 610). forma adequada. Quando a GCS é uma atividade formal, a auditoria de confi­ guração é conduzida pelo grupo responsável pela garantia de qualidade. A auditoria também tem como objetivo garantir que os ICS’s corretos foram incorporados em um build específico e que sua documentação está consistente com a nova versão. Relatórios de Estado Os relatórios de estado é uma tarefa de GCS que tem por objetivo responder às seguintes questões: • O que aconteceu ? • Quem fez ? • Quando aconteceu ? • O que mais será afetado ? O relatório de estado reúne informações de todos os estágios da GCS. Atividades como identificação de ICS’s, aprovação de modificações, resultado das auditorias de configuração são registradas no relatório de estado. O relatório de estado deve ser colocado em um banco de dados de maneira que todas as pessoas envolvidas na manutenção de software tenham acesso as informações ali contidas. O principal objetivo de um relatório de estado é manter a gerência e os profissionais informados das modificações sofridas por um software, de­ vendo ser gerado regularmente. Figura 4. Processo de controle de modificações (Pressman, 2006) Ferramentas de Apoio à GCS Auditoria de Configuração Existem diversas ferramentas disponíveis no mercado para Além dos controles de identificação, versão e modificação apoiar a Gerência de Configuração de Sistemas. As funciona­ vistos anteriormente, precisamos implementar algum mecanis­ lidades, documentação, o suporte disponível e popularidade mo que nos garanta que as modificações foram feitas de forma variam bastante. As ferramentas comerciais apresentam adequada. Este mecanismo envolve dois aspectos: maior número de funcionalidades mas tem um alto custo. As Edição 24 - Engenharia de Software Magazine 19
  • 20.
    ferramentas open sourcealém de baixo custo, também apre­ reconhecido como sendo líder isolado na categoria Standalone sentam vantagens como qualidade e segurança. A Tabela 1 Software Configuration Manager (SSCM) tendo uma forte apresenta algumas ferramentas e suas aplicações. atuação na categoria Software Configuration and Change Management (SCCM). Tipo de ferramenta Nome O Subversion começou a ser escrito no ano 2000 como um Controle de Versão CVS esforço para criar um sistema de controle de versão o qual SubVersion operasse de forma parecida com o CVS porém sem os seus Controle de mudança Mantis problemas, e suprindo as facilidades não existentes no CVS. No Bugzilla ano de 2001, o Subversion já estava suficientemente desenvol­ Integração (Build) Scons vido para ser capaz de hospedar seu próprio código fonte. Tabela 1. Ferramentas para GCS Algumas de suas facilidades são: • Operações de “Commit” são atômicas. Interrupções nestas CVS operações não causam inconsistências no repositório; O CVS, ou Concurrent Version System (Sistema de Versões • Mudanças de nomes, cópias, e movimentações de arquivos Concorrentes), é um sistema de controle de versão open source, são guardadas como histórico de revisões; que permite que se trabalhe com diversas versões de arquivos • Mudanças de nomes em diretórios são guardados também organizados em um diretório e localizados local ou remota­ como versões. Árvores de diretórios inteiras podem ser movi­ mente, mantendo-se suas versões antigas e os logs de quem e das ou copiadas com rapidez e tem estas operações guardadas quando manipulou os arquivos. no histórico de revisões; É especialmente útil para se controlar versões de um software • Servidor Apache HTTP como servidor de rede; durante seu desenvolvimento, ou para composição colaborativa • Operações de Branch e Tag são menos custosas, independente de um documento. do tamanho do arquivo. O Subversion não faz distinção entre O CVS utiliza uma arquitetura cliente-servidor: um servidor Tag, Branch e um diretório; armazena as versões atuais do projeto e seu histórico, e os clien­ • Permite operações de “lock” para arquivos que não podem tes se conectam a esse servidor para obter uma cópia completa ser fundidos (sofrer operação de “merge”). do projeto, trabalhar nessa cópia e então devolver suas modifica­ ções. Tipicamente, cliente e servidor devem estar conectados por Mantis uma rede local de computadores, ou pela internet, mas o cliente Mantis é um sistema de controle de mudança open source, e o servidor podem estar na mesma máquina se a configuração baseado em Web, bastante popular. Foi escrito em linguagem do CVS for feita de maneira a dar acesso a versões e histórico PHP e trabalha com banco de dados MySQL, MS SQL e Pos­ do projeto apenas a usuários locais. tgreSQL e um webserver. Pode ser instalado em Windows, O CVS possui limitações tais como: Linux, Mac OS, OS/2 e outros e funciona na maioria dos web • Os arquivos em um repositório CVS não podem ser re­ browsers como um cliente. nomeados, eles devem ser explicitamente removidos e re- Algumas de suas características são: adicionados; • É um software livre (licença GPL); • O protocolo do CVS não permite que os diretórios sejam mo­ • Fácil de instalar; vidos ou renomeados. Cada arquivo do subdiretório em questão • Fácil de avaliar; deve ser individualmente removido e re-adicionado; • É baseado em Web; • Não permite “lock” (permite que dois usuários alterem o • Suporta qualquer plataforma que roda PHP; mesmo arquivo ao mesmo tempo) e em alguns casos pode ser • Suporta múltiplos projetos por instancia; mais custoso resolver o conflito do que evitar que ele ocorra. • Suporte para Projetos, Sub-projetos e categorias; • Suporte a diferentes níveis de acesso de usuário por projetos; Subversion • Suporta log de mudanças; Subversion (também conhecido por SVN, o nome da sua ferra­ • Possui diversos relatórios e gráficos; menta de linha de comando) é um sistema de controle de versão • Usuários podem monitorar as solicitações; open source projetado especificamente para ser um substituto • Envio de notificações por e-mail; moderno do CVS, que se considera ter algumas limitações. • Permite histórico de mudanças; O Subversion é bem conhecido na comunidade que utiliza • Integração com SVN e CVS. código aberto e é utilizado em diversos projetos incluindo Apache Software Foundation, KDE, Free Pascal, FreeBSD, GCC Bugzzila Python, Django, Ruby, Mono, SourceForge.net, ExtJS e Tigris.org. Bugzilla é uma ferramenta baseada em Web e e-mail, que dá O Google Code também faz a hospedagem de seus projetos de suporte ao desenvolvimento do projeto Mozilla, rastreando código aberto utilizando o Subversion. defeitos de software, e servindo também como plataforma O Subversion também é adotado no mundo corporativo. para solicitações e controle de mudanças. Como projeto de Em 2007, a Forrest Research reportou que o Subversion foi software livre, é mantido por voluntários, sendo utilizado 20 Engenharia de Software Magazine - Gerência de Configuração
  • 21.
    Projeto por diversos outrosprojetos e empresas. Algumas de suas Institute) na Carnegie Mellon University a pedido do Depar­ características são: tamento de defesa dos EUA que necessitava de um modelo • Capacidade de pesquisa avançada; para avaliar os seus fornecedores de software. A versão 1.1 • Notificações por e-mail controladas pelas preferências de foi publicada em 2002 e a atual, versão 1.2 , foi publicada em usuários; agosto de 2006. • Lista de defeitos em diversos formatos; A missão inicial da equipe que produziu o CMMI era com­ • Relatórios periódicos (diários, semanais etc.) enviados por binar três modelos: e-mail; • Capability Maturity Model for Software (SW-CMM) v. 2.0 • Controle de tempo de execução de uma solicitação; draft C • Sistema de atribuição de tarefas; • Systems Engineering Capability Model (SECM) • Diversas versões de localização (incluindo Português • Integrated Product Development Capability Maturity Model – Brasil). (IPD-CMM) v. 0.98 SCons O CMMI permite abordar a avaliação e o melhoramento de SCons é uma ferramenta de construção de software open processos utilizando dois tipos de representação: contínua e source escrita em Python. O SCons provê uma ponte entre por estágio. plataformas e é o substituto para o utilitário clássico Make com A representação contínua permite a uma organização sele­ funcionalidades similares ao autoconf/automake, e possui com­ cionar áreas de processo e melhorar os processos relacionados piladores integrados. Algumas de suas características são: a ela. Nesta representação, são utilizados níveis de capacidade • Seus arquivos de configuração são scripts Python; para caracterizar os melhoramentos relativos a uma área de • Analise automática de dependências, nativa para C, C++ e processo individual. Fortran, extensível para outras linguagens; A representação por estágios usa um conjunto pré-definido • Suporte nativo para adquirir arquivos fonte do CVS; de áreas de processo para definir uma via de melhoramento • Suporte nativo ao MS Visual Studio .NET para uma organização. Esta via de melhoramento é carac­ • Detecção de mudanças de construção usando assinaturas terizada por níveis de maturidade. Cada nível fornece um baseadas em MD5. conjunto de áreas de processo que caracterizam diferentes comportamentos organizacionais. Gerência de configuração nos modelos de maturidade A Figura 5 mostra uma visão geral por estágio dos níveis de A partir dos anos 90, iniciou-se um movimento no sentido de maturidade e as áreas de processo envolvidas. Podemos notar solucionar problemas que afetavam a industria de software. na figura que a Gestão de Configuração de Software é uma Problemas como descumprimento de prazos, estouro de or­ área de processo do nível 2 do modelo de maturidade. çamentos, falta de funcionalidades requeridas pelos clientes e Segundo o CMMI-DEV (2006, p.114), o propósito da Gestão outros, afetavam de maneira drástica a qualidade dos produtos de Configuração de software (GCS) é estabelecer e manter a de software produzidos nesta época. integridade dos produtos de trabalho, usando identificação da A maioria destes problemas originavam-se do fato da cons­ configuração, controle de configuração, status da configuração trução de software ser conduzida utilizando-se processos contábil e auditoria de configuração. improvisados e pouco ou nada controlados. Sendo assim, As metas e práticas especificas da gestão de configuração vários órgãos e associações começaram a criar modelos que definidas na CMMI são: orientassem o desenvolvimento destes produtos. SG 1. Estabelecer baselines. Embora hoje existam diversos modelos de maturidade SP 1.1 Identificar itens de configuração voltados para o desenvolvimento de software objetivando SP 1.2 Estabelecer um Sistema de Gestão de Configuração aumentar a produtividade da construção e a sua qualidade, SP 1.3 Criar ou liberar baselines todos incluem a utilização de práticas de GCS que variam de SG 2. Rastrear e controlar mudanças acordo com cada modelo. SP 2.1 Rastrear requisição de mudanças Neste artigo será apresentado os pontos em comum da apli­ SP 2.2 Controlar itens de configuração cação da GCS nos modelos CMMI, e MPS.BR. SG 3. Estabelecer integridade SP 3.1 Estabelecer registros de Gerencia da Configuração GCS aplicada no CMMI SP 3.2 Realizar auditorias de configuração O CMMI (Capability Maturity Model Integration) tem como objetivo prover um modelo de maturidade para desenvolvi­ GCS aplicada no MPS mento de produtos e serviços de uma maneira geral. Ele aponta O programa MPS.BR (Melhoria de Processo do Software práticas que cobrem o ciclo de vida dos produtos desde a sua Brasileiro) foi criado em 2003 pela SOFTEX (Associação para concepção até a entrega e manutenção. A versão 1.0 foi publi­ Promoção da Excelência do Software Brasileiro). O MPS.BR cado em 2000 em substituição ao CMM (Capability Maturity tem o apoio do Ministério de Ciência e Tecnologia (MCT) Model) Versão 1.1, criado pela SEI (Software Engineering da Financiadora de Estudos e Projetos (FINEP) e do Banco Edição 24 - Engenharia de Software Magazine 21
  • 22.
    Figura 5. Visãopor nível de maturidade X Áreas de processo Interamericano de Desenvolvimento (BID). Sua estrutura está Este modelo surgiu pelo fato de muitas empresas ao busca­ dividida em duas áreas de apoio: rem certificação CMM/CMMI se depararem com os custos • Fórum de Credenciamento Controle (FCC) cujas atribui­ elevados de implementação/avaliação, inviabilizando as ções são: certificações para pequenas empresas. I. Emitir parecer que subsidie decisão da SOFTEX sobre o Uma das metas do programa MPS.BR é definir e aprimorar credenciamento de Instituições Implementadoras (II) e Ins­ um modelo de melhoria e avaliação de processo de software tituições Avaliadoras (IA); visando preferencialmente às micro, pequenas e médias em­ II. Monitorar os resultados das Instituições Implementa­ presas, de forma a atender as suas necessidades de negócio doras (II) e Instituições Avaliadoras (IA), emitindo parecer e ser reconhecido nacional e internacionalmente como um propondo à SOFTEX o seu descredenciamento no caso de modelo aplicável à indústria de software. comprometimento da credibilidade do modelo MPS. A base técnica para a construção e aprimoramento deste • Equipe Técnica do Modelo (ETM) cuja atribuição é apoiar a modelo de melhoria e avaliação de processo de software é SOFTEX sobre os aspectos técnicos relacionados ao Modelo composta pelas normas ISO/IEC 12207:2008 [ISO/IEC, 2008a] de Referência (MR-MPS) e Métodos de Avaliação (MA-MPS) e ISO/IEC 15504-2 [ISO/IEC, 2003]. O MPR.BR se propõe ser para: compatível com o modelo CMM/CMMI para software. I. Criação e aprimoramento contínuo do MR-MPS, MA-MPS Na Figura 6 temos uma visão geral dos principais compo­ e seus guias específicos; nentes MPS.BR. II. Capacitação de pessoas por meio de cursos, provas e O Modelo de Referência, MR-MPS, define níveis de ma­ workshops. turidade que são uma combinação entre processos e sua 22 Engenharia de Software Magazine - Gerência de Configuração
  • 23.
    Projeto capacidade. Para cadanível de maturidade são estabelecidos software utilizando-se das ferramentas Mantis para controle de processos que caracterizam estágios de melhoria da imple­ modificações e Subversion para controle de versões. mentação de processos na organização. O MR-MPS define sete níveis de maturidade: Nivel Processos • A (Em Otimização); A • B (Gerenciado Quantitativamente); B Gerência de Projetos – GPR (evolução) • C (Definido); C Gerência de Riscos – GRI • D (Largamente Definido); Desenvolvimento para Reutilização – DRU • E (Parcialmente Definido); Gerência de Decisões – GDE • F (Gerenciado); D Verificação – VER • G (Parcialmente Gerenciado). Validação – VAL Projeto e Construção do Produto – PCP Integração do Produto – ITP Desenvolvimento de Requisitos – DRE E Gerência de Projetos – GPR (evolução) Gerência de Reutilização – GRU Gerência de Recursos Humanos – GRH Definição do Processo Organizacional – DFP Avaliação e Melhoria do Processo Organizacional – AMP F Medição – MED Garantia da Qualidade – GQA Gerência de Portfólio de Projetos – GPP Figura 6. Visão geral dos componentes do MPS.BR Gerência de Configuração – GCO Aquisição – AQU O primeiro nível da escala é o “G” e o último o “A”. A G Gerência de Requisitos – GRE Tabela 2 mostra os processos exigidos para cada nível de Gerência de Projetos – GPR maturidade. Tabela 2. Níveis de Maturidade do MR-MPS Segundo definição do MPS.BR Guia de Implementação (2009, p. 16), o propósito do processo de Gerência de Configuração Estudo de caso de uma implementação de GCS com é estabelecer e manter a integridade de todos os produtos de Mantis e Subversion trabalho de um processo ou projeto e disponibilizá-los a todos A partir de agora será apresentado um estudo de caso de os envolvidos. A GCS é encarada pelo MPS.BR como sendo implementação de práticas de GCS com as ferramentas Mantis um processo do nível de maturidade “F” e portanto deve ter e Subversion em uma empresa de construção de software de resultados esperados. Os resultados esperados da GCS são: pequeno porte. A esta empresa, daremos o nome fictício de • GCO1 - Um Sistema de Gerência de Configuração é esta­ “Casa do Software”. belecido e Mantido; • GCO2 - Os itens de configuração são identificados com base Cenário em critérios estabelecidos; A empresa “Casa do Software” é uma empresa de pequeno porte • GCO3 - Os itens de configuração sujeitos a um controle e conta com trinta e cinco colaboradores. A empresa desenvolve formal são colocados sob baseline; softwares voltados para áreas comerciais de outras empresas • GCO4 - A situação dos itens de configuração e das baselines utilizados por vendedores em seus notebooks nas visitas a seus é registrada ao longo do tempo e disponibilizada; clientes. A empresa não possui uma política de GCS implementa­ • GCO5 - Modificações em itens de configuração são da. Existe apenas uma rotina periódica de back-ups que fica sob controladas; responsabilidade do pessoal de suporte de infra-estrutura. • GCO 6 - O armazenamento, o manuseio e a liberação de itens As solicitações de modificações são feitas pelos clientes de configuração e baselines são controlados consistentes; através de reuniões realizadas com o gerente de projetos e • GCO7 - Auditorias de configuração são realizadas objeti­ desenvolvedores. A única documentação existente sobre as vamente para assegurar que as baselines e os itens de confi­ solicitações são as atas das reuniões, não havendo documen­ guração estejam íntegros, completos e consistentes. tação de acompanhamento da manutenção e aprovação formal das mesmas por parte da gerência de projetos. Existe mais Nesta parte do artigo foi mostrado onde a Gerência de confi­ de uma versão do mesmo sistema, como conseqüência de guração de Software se encaixa nos dois dos principais modelos alterações feitas especificamente para determinados clientes, de maturidade de software usados por em presas brasileiras. Na o que complica ainda mais a manutenção dos produtos de próxima seção do artigo será apresentado um estudo de caso software. Como a empresa está em franca expansão, fica clara de aplicação de GCS em uma empresa de desenvolvimento de a necessidade de se implementar práticas de GCS que possam Edição 24 - Engenharia de Software Magazine 23
  • 24.
    contribuir para melhorara qualidade de software da mesma, Nas seções seguintes mostraremos um PGC para esta em­ além disso, as práticas de GCS adotadas deverão estar em presa com base em pesquisa nos trabalhos de Borges (2006), conformidade com o MPS-BR. Barbosa (2007), Neto(2005). Como nesta empresa não existe a prática de GCS, será ne­ cessário a realização de treinamentos para que os diversos colaboradores envolvidos no processo de implementação de tais práticas e também aqueles que irão fazer uso dela possam compreender o novo processo e utilizá-lo conforme definido no Plano de Gerência de Configuração. Como projeto piloto, foi selecionado o SISVEN (Sistema de Vendas). O SISVEN é um sistema feito em Java destinado a tirar pedidos de vendas, fazer prospecção de clientes e roda em notebooks utilizados por vendedores que visitam clientes em todo o país. Plano para implementação da GCS na empresa Devido ao tamanho da empresa e da pouca experiência do pessoal envolvido, será implantada a GCS sob a perspectiva de desenvolvimento, a qual abrange os sistemas de Controle Figura 7. Fluxo do Plano de Implementação da GCS na empresa de Modificações, Controle de Versões e Gerenciamento da Construção. Histórico das Revisões Embora a implementação seja feita sob esta perspectiva, as As tabelas apresentadas nas Tabelas 3 e 4 deverão ser altera­ funções da perspectiva gerencial podem ser implementadas das sempre que alguma modificação for feita no PGC. por estes três sistemas acrescendo-se procedimentos manuais. Neste artigo apresentaremos uma solução baseada em Mantis Data Versão Descrição Autor para o “Controle de modificações”, e Subversion para o “Con­ 05/07/2009 1.0 Criação da primeira versão Alberto Boller trole de Versões”. O “Gerenciamento de construção” feito por um sistema automatizado não será tratado neste trabalho. Na Figura 7 podemos ver o fluxo do Plano para implementação da GCS na empresa. Criação da Equipe de Gerência de Configuração (EGC) Tabela 3. Histórico das Revisões A Equipe de Gerência de Configuração (EGC) será composta por um gerente de configuração, um gerente de projetos e por Data Versão Nome Cargo uma pessoa de infra-estrutura. 05/07/2009 1.0 Alberto Boller Filho Gerente de Projetos A responsabilidade deste grupo é procurar melhorar de for­ ma constante as atividades de GCS definidas para a empresa, seja mudando processos ou incluindo novas ferramentas. Criação do Comitê de Controle de Configuração (CCC) Tabela 4 . Aprovações O Comitê de Controle de Configuração (CCC) será com­ posto pelo gerente de projetos e o Gerente de Qualidade. A Histórico das Revisões responsabilidade do CCC será avaliar se uma determinada Aprovações modificação deve ser implementada, rejeitada ou posterga­ da, baseando-se em análises de impacto que tal modificação Identificação dos ICS’s irá causar. Os itens de configuração, os níveis de controle exigidos e os identificadores para cada um encontram-se descritos na Criação do Plano de Gerência de Configuração (PGC) Tabela 5. Outros itens também poderiam ser controlados O Plano de Gerência de Configuração (PGC) define formal­ mas para exemplificar este estudo de caso, os itens constan­ mente os padrões e práticas adotadas pela empresa no que tes nesta tabela são suficientes. tange à GCS. Neste documento estão descritos os procedi­ mentos a serem seguidos, as ferramentas a serem utilizadas, Regras para nomeação dos itens de configuração os ICS’s que deverão estar sob controle da GCS, sua forma de Com exceção do Plano de Gerencia de Configuração, identificação e todas as diretrizes que qualquer sistema deverá Fontes e Executáveis, o nome dos artefatos deverá seguir seguir dentro da empresa. a seguinte regra: 24 Engenharia de Software Magazine - Gerência de Configuração
  • 25.
    Projeto <SISVEN>-<identificador_do_artefato>-<xxx> Armazenamento dos ICS’s Todos os ICS’s especificados na Tabela 5 serão armaze­ Onde <xxx> é um número sequencial começando em 001. nados em um repositório do Subvesion em um servidor de arquivos que poderá ser acessado via Internet ou através Descrição Identificador Nível de Controle da rede local. A estrutura do diretório do repositório para Casos de uso UC Versão e mudança armazenamento do sistema SISVEN pode ser visto na Diagrama de Classes DC Versão e Mudança Figura 8. Documento de Requisitos DR Versão e Mudança Plano de Testes PTES Versão e Mudança Plano de Gerencia de Configuração - Versão e Mudança Código Fonte - Versão e Mudança Release - Versão e Mudança Tabela 5. Itens de Configuração Regras para versionamento As regras de versionamento serão aplicadas apenas nas identificações de tags e branches, uma vez que o Subver­ sion controla as versões de itens de configuração a cada operação de commit. O padrão de versionamento utilizará a regra descrita a seguir: <XX>.<YY> Figura 8. Estrutura de diretório do repositório onde: • XX é um número decimal que representa a versão; Gerenciamento de Baselines • YY é um número decimal que representa a modificação. Sempre que uma modificação for concluída, seja em algum documento ou código fonte e o gerente de projetos tiver O primeiro numero de versão deverá ser 01.00. A cada mo­ inspecionado os testes e aprovado, o desenvolvedor poderá dificação, o valor YY deve ser incrementado de uma unidade solicitar ao gerente de configuração a criação de uma base­ e retorna para 00 assim que uma nova versão é gerada. line. As baselines ficarão armazenadas na subpasta “tag” da estrutura de diretório do repositório. Identificação de Tags Os branches deverão ser criados pelo gerente de configu­ Sempre que uma nova baseline for criada, esta deverá ser ração apenas quando a modificação exigida pela solicitação identificada por uma tag seguindo as seguintes regras: de mudança levar um tempo para sua conclusão superior • Baseline de Documentos a três semanas, caso contrário será feita na mainline cuja DOC-V-<versão> subpasta da estrutura de diretório chama-se “trunk” (ver • Baseline de Código Fonte Figura 8). FONTE-V-<versão> Apenas o gerente de configuração terá autoridade para • Baseline de Releases criar branches e tags e deverá fazê-lo mediante a solicitação RELEASE-V-<versão> formal do gerente de projeto que deverá enviar um e-mail especificando o que e para quem deve ser criado. Onde <versão> segue as regras descritas no item anterior. Estabelecimento de um sistema de GCS Identificação de Branches Conforme descrito no MPS.BR Guia de Implementação Sempre que houver necessidade de criação de um branch, sua (SOFTEX, 2009, p. 20), para que a Gerência de Configu­ identificação deverá obedecer aos seguintes padrões: ração ocorra de forma sistemática, é necessário que seja • Branch de Documentos estabelecido um sistema de Gerência de Configuração. Esse DOC-MANUT-<número_da_solicitação_de_modificação> sistema pode ser decomposto em três subsistemas: sistema • Branch de Código Fonte de controle de versões, sistema de controle de modificações FONTE-MANUT-< número_da_solicitação_de_modificação> e sistema de gerenciamento de construção. • Branch de Releases Para o subsistema de controle de modificações, utiliza­ RELEASE-MANUT-< número_da_solicitação_de_modificação> remos a ferramenta Mantis. A escolha desta ferramenta está apoiada no fato de ser open source (o que diminui os O <número_da_solicitação_de_modificação> será aquele atri­ custos), por ter integração direta com o Subversion (o que buído pelo campo ticket do Mantis conforme veremos adiante. permite dar visibilidade ao processo), e ser uma aplicação. Edição 24 - Engenharia de Software Magazine 25
  • 26.
    A Figura 9ilustra o fluxo básico de controle de modificações produto TortoiseSVN que faz a mesma coisa só que de forma que será seguido quando uma solicitação de modificação interativa e visual facilitando o trabalho. for feita pelo usuário. Figura 10. Tela de login do Mantis Figura 9. Fluxo do Controle de modificações da empresa “Casa do Software” Figura 11. Visão inicial dos status de solicitações de mudanças Nas Figuras 10 a 14 podemos visualizar como o Mantis trata o controle de uma solicitação de modificações. Na Figura 10 observamos que existe um controle de acesso às solicitações a nível de tipo de usuário que pode ser um relator, desenvolvedor, gerente administrador etc, cada qual com suas restrições de acesso. Na Figura 11 temos uma visão (a nível de usuário) das diver­ sas solicitações e seus status. Nas Figuras 12 a 14 aparece em detalhes todos os tramites pelos quais passou uma solicitação de mudanças, permitindo manter informado o usuário solici­ tante e todos os outros envolvidos no processo de GCS. Para o subsistema de controle de versões, será utilizado o Subversion. A escolha desta ferramenta também está baseada no fato de ser open source, ter integração com o Mantis e com Figura 12. Visão detalhada de uma solicitação de mudança (Informações o Eclipse. O Subversion possui uma parte server que roda em gerais) um servidor e que fica responsável por fazer as operações de check-in, check-out, controle de lock, merge, controle de acesso Na Figura 15 é apresentado um fluxo básico de utilização e outras. O Subversion possui também uma parte client, que do Subversion. roda na máquina do desenvolvedor e que tem a função de Nas Figuras 16 a 23 são apresentados exemplos das funções solicitar à parte server as funções necessárias. Como a parte descritas na Figura 15 usando-se o TortoiseSVN. client do Subversion é executada em linha de comando, e por As Figuras 16 e 17 mostram que o desenvolvedor deve fazer esta razão ser pouco amigável, iremos utilizar como client o uma cópia dos ICS’s do repositório para seu disco local a fim 26 Engenharia de Software Magazine - Gerência de Configuração
  • 27.
    Projeto de poder fazeras modificações necessárias utilizando-se da operação de check-out. A Figura 18 mostra que novos itens de configuração são adicionados à cópia local do repositório atra­ vés de operação de add. A Figura 19 mostra uma operação de update para atualizar a cópia local do repositório. As Figuras 20 à 22 mostram uma atualização da mainline através de uma operação de commit. Vale observar neste ultimo caso que esta operação é controlada com autenticação de usuário e senha. Por fim, a Figura 23 mostra um log com todas as operações executadas neste repositório ao longo do tempo. Através das figuras vistas pode-se concluir que o Subversion Figura 16. Fazendo check-out controla de forma adequada o armazenamento e manuseio de ICS’s, fornecendo dados para sua auditoria. Figura 17. Resultado da operação de check-out Figura 13. Visão detalhada de uma solicitação de mudanças (Anotações) Figura 18. Adicionando novos programas ao repositório local Figura 14. Visão detalhada de uma solicitação de mudança (Histórico do caso) Figura 15. Fluxo básico de utilização do subversion Figura 19. Fazendo uma operação de update para atualizar a cópia local Edição 24 - Engenharia de Software Magazine 27
  • 28.
    Figura 20. Iniciandouma operação de commit Figura 23. Log das operações realizadas no repositório Instalação do Mantis A versão do Mantis para Windows pode ser baixada a partir do site “http://www.mantisbt.org/download.php”. A sua versão estável mais recente é a MantisBT 1.1.8. Os se­ guintes softwares são requeridos e devem ser instalados: • PHP 4.3.0 and higher • MySQL database 4.1.1 and higher (MS SQL and DB2 are also supported). • Web server (Apache, IIS, etc.) Como forma de facilitar a instalação dos softwares acima, pode ser instalado a última versão do XAMPP que traz todos os requisitos para rodar o Mantis. O XAMPP pode Figura 21. Operação de commit (autenticação de usuário autorizado) ser baixado a partir do site www.baixaki.com.br. Caso seja instalado o XAMPP, o diretório de instalação do Mantis deve estar localizado na pasta “htdocs” existente no diretório de instalação do XAMPP. O Mantis é simples de instalar. Basicamente é só seguir as instruções de instalação que irão surgir na tela. Configuração do Mantis Após instalado o Mantis é necessário configurar o arquivo “config.inc.php” com os parâmetros corretos para emissão de e-mails. A configuração utilizada neste trabalho está apresentada na Figura 24. Os campos “user”, “domínio” e “password” que aparecem no texto devem ser substituídos pelos correspondentes de cada caso. A configuração listada na Figura 24 já inclui os parâ­ Figura 22. Resultado da operação de commit metros necessários para integração com o Subversion. O significado de cada parâmetro pode ser obtido no manual do Mantis no endereço “http://manual.mantisbt.org/ Resultados esperados do MPS.BR alcançados na solução index.php”. adotada Vale observar que para que o envio de e-mails a cada novo Conforme descrito anteriormente, a solução adotada deve­ status de uma solicitação de modificação ocorra, é neces­ rá estar em conformidade com o modelo MPS-BR. sário a instalação do PHPMailer, que pode ser encontrado Segundo o MPS.BR Guia Geral (SOFTEX, 2009, p.23) o no site “http://phpmailer.sourceforge.net”. A instalação do processo de Gerencia de Configuração encontra-se no nível PHPMailer é simples, bastando para tanto copiar os arqui­ “F” do MR-MPS e deve atingir sete resultados esperados. vos “class.smtp.php” e “class.phpmailer.php” para o diretó­ A Tabela 6 mostra os resultados esperados e os itens deste rio destinado aos arquivos de include. No caso do XAMPP o trabalho onde estão contemplados. diretório é “<diretório_de_instalação_do_XAMPP> php 28 Engenharia de Software Magazine - Gerência de Configuração
  • 29.
    Projeto Resultado esperado Seção GCO 1. Um Sistema de Gerência de Configuração é estabelecido e mantido Estabelecimento de um sistema de GCS GCO 2. Os itens de configuração são identificados com base em critérios estabelecidos Identificação dos ICS’s Regras para nomeação dos itens de configuração Regras para versionamento Identificação de Tags Identificação de Branches GCO 3. Os itens de configuração sujeitos a um controle formal são colocados sob baseline Armazenamento dos ICS’s Gerenciamento de Baselines Estabelecimento de um sistema de GCS GCO 4. A situação dos itens de configuração e das baselines é registrada ao longo do tempo e Gerenciamento de Baselines disponibilizada; Estabelecimento de um sistema de GCS GCO 5. Modificações em itens de configuração são controladas; Estabelecimento de um sistema de GCS GCO 6. O armazenamento, o manuseio e a liberação de itens de configuração e baselines são Estabelecimento de um sistema de GCS controlados GCO 7. Auditorias de configuração são realizadas objetivamente para assegurar que as baselines e os Estabelecimento de um sistema de GCS itens de configuração estejam íntegros, completos e consistentes Tabela 6. Resultados esperados no nível F do MPS.BR PEAR”. A instalação está descrita no arquivo “readme” que traz também um exemplo simples. Instalação do Subversion A instalação do Subversion é mais simples do que a do Mantis. O arquivo de instalação pode ser obtido no ende­ reço http://www.collab.net/downloads/subversion/. O único software requerido é o Apache version: 2.2.11 que já estará instalado caso o XAMPP tenha sido instalado primeiro. Vale ressaltar que neste endereço existem dois arquivos de instalação que devem ser baixados: • CollabNet Subversion Server and Client v1.6.3 (for Windows) • CollabNet Subversion Command-Line Client v1.6.3 (for Windows) O primeiro é obrigatório para o funcionamento das ope­ rações. Para o segundo arquivo, poderá ser usada a alter­ nativa do software “TortoiseSVN” que é mais amigável e tem integração direta com o Windows Explorer. O arquivo para instalação do TortoiseSVN pode ser encontrado no site “www.baixaki.com.br”. Não é necessário configuração adicional no software para o seu funcionamento, porém, para cada repositório deverá ser configurado os perfis Figura 24. Arquivo config.inc.php de acesso no arquivo “svnserve.conf”. Para detalhes de integração do Subversion com o Mantis, consulte o site terminologias e algumas ferramentas voltadas para dar http://alt-tag.com/blog/archives/2006/11/integrating- apoio à GCS. mantis-and-subversion/. Na sequencia, mostramos uma solução de boa qualidade e baixo custo que atende as exigências dos modelos de maturi­ Consideraçõs Finais dade e que pode ser facilmente implementada em empresas Neste artigo, vimos inicialmente os conceitos gerais de de pequeno porte a fim de instalar as práticas de Gerência de Gerencia de Configuração de software, suas principais Configuração de Software. A solução foi mostrada através de Edição 24 - Engenharia de Software Magazine 29
  • 30.
    um estudo decaso em uma empresa fictícia, e fez uso das fer­ Dê seu feedback sobre esta edição! eu Feedback s ramentas Mantis e Subversion para o controle de solicitação Dê A Engenharia de Software Magazine tem que ser feita ao seu gosto. sobre e de modificações e controle de versões respectivamente. Para isso, precisamos saber o que você, leitor, acha da revista! Foram apresentados ainda aspectos de instalação das ferra­ s ta edição Dê seu voto sobre este artigo, através do link: mentas e sua customização. www.devmedia.com.br/esmag/feedback Referências Links Barbosa, Valeria Plano de Gerência de Configuração de Software: Sistema de Collabnet “CollabNet Subversion Downloads” Controle de Custos 11/09/2007 disponível em http://conexao.googlecode.com/files/ http://www.collab.net/downloads/subversion/ SYSCOPlanoGerenciaConfiguracao.pdf Comunidade de Software & Inovação Empresarial “As Ferramentas de SCM e o Suporte Ben Collins-Sussman, de et al Version Control with Subversion: for Subversion 1.6 (Compiled do CMM” from r3445) 2008 disponível em <http:subversion.tigris.org/> http://paginas.ispgaya.pt/~msantos/es_artigos_tecnicos_1/60_FerramentasSCM_e_ suporteCMM.pdf Borges, Vanessa R. Implantação de Práticas de Gerência de Configuração em uma Fábrica de DevMedia “Gerência de Configuração – Parte 1” Software: Um estudo de caso (Graduação em Ciência da Computação) Universidade Federal de http://www.devmedia.com.br/articles/viewcomp.asp?comp=9378 Lavras, Minas Gerais, 2006 EAI Community “Establishing a Configuration Management Baseline” Forte, G.,“Rally Round the Repository” CASE Outlook, Dez 1989, p. 5-27 , http://it.toolbox.com/blogs/enterprise-solutions/establishing-a-configuration-management- baseline-13910 MOLINARI, Leonardo. Gerência de configuração: Técnicas e práticas no desenvolvimento do software. Florianópolis : Visual Books, 2007. 208p. Enciclopédia Livre, (2007) “Gerência de Configuração de Software” http://pt.wikipedia.org/wiki/Ger%C3%AAncia_de_Configura%C3%A7%C3%A3o_de_Software Neto, Euclides Plano de Gerência de configuração de software: Projeto VENSSO – Venda de Serviços de Software 27/05/2005 disponível em <http://vensso.sourceforge.net/doc/ Gerência de Configuração “Gerência de Configuração” VENSSO_SCM_20050527.pdf> http://www.cin.ufpe.br/~gfn/qualidade/gc.html PRESSMAN, Roger S. Engenharia de software. 6ª. ed. São Paulo : McGraw-Hill, 2006. xxxi, 720p. Mantis “Mantis Bug Tracker” http://www.mantisbt.org/ SEI, Software Engineering Institute. CMMI for Development, Version 1.2: CMMI DEV V 1.2. Pronus Engenharia de Software “O que é Gerência de Configuração” Carnegie Mellon University, EUA, 2006 573p. http://www.pronus.eng.br/artigos_tutoriais/gerencia_configuracao/gerencia_configuracao.php SOFTEX MPS.BR - Melhoria de Processo do Software Brasileiro, Guia de Implementação – Parte 2: Regularize “Gerência de Configuração de Software” Nível F, Rio de Janeiro, 2009 53p http://cartilha.regularize.com.br/list/18/cartilha/post/80/gerencia-de-configuracao-de-software.html SOFTEX, MPS.BR - Melhoria de Processo do Software Brasileiro, Guia Geral Rio de Janeiro, 2009 57p Tigris.org “Subversion” http://subversion.tigris.org/ 30 Engenharia de Software Magazine - Gerência de Configuração
  • 31.
    Engenharia processo Nesta seção você encontra artigos voltados para testes, processo, modelos, documentação, entre outros Medição de Software Um importante pilar da melhoria de processos de software De que se trata o artigo? Este artigo discute algumas questões relaciona- das à Medição de Software, principalmente no contexto da melhoria de processos de software. Para que serve? Fornecer conhecimento sobre Medição de Softwa- re para organizações, pesquisadores, estudantes e O s avanços tecnológicos e a alta profissionais de software. competitividade do mercado estão continuamente aumen­ Em que situação o tema é útil? tando a demanda por softwares cada Organizações de software que têm (ou planejam vez melhores e que sejam produzidos ter) a Medição de Software como uma de suas em projetos aderentes aos custos e práticas. Estudantes e profissionais de software prazos planejados. Mesmo diante de que buscam entendimento sobre o tema. todos os avanços tecnológicos, realizar projetos aderentes aos seus planos ain­ da é um desafio para grande parte das A medição de software é considerada Monalessa Perini Barcellos organizações de software. Buscando uma das atividades mais importantes monalessa@inf.ufes.br aprimorar suas práticas de Engenharia para a gerência e melhoria de processos É Doutora em Ciências em Engenharia de de Software e, consequentemente, desen­ e produtos de software, uma vez que Sistemas e Computação (COPPE/UFRJ), Mes- tre em Ciências em Engenharia de Sistemas volver produtos de melhor qualidade em fornece subsídios para a elaboração de e Computação (COPPE/UFRJ), Bacharel em projetos conduzidos de acordo com seus planos realistas para os projetos e possi­ Ciência da Computação (UFES). Professora planos, as organizações têm mostrado bilita o monitoramento da aderência da do Departamento de Informática, área Enge- um crescente interesse por programas execução dos projetos em relação a seus nharia de Software, da Universidade Federal de melhoria de processos, contexto no planos (ISO/IEC, 2007). Isso é possível, do Espírito Santo (UFES). Atuante desde 1999 em projetos, consultorias, treinamentos e pes- qual a medição de software tem papel pois as medidas, ao serem coletadas e quisas da área de Engenharia de Software. fundamental. armazenadas, podem ser analisadas Edição 24 - Engenharia de Software Magazine 31
  • 32.
    através de métodose fornecem informações importantes para nos requisitos dos níveis iniciais dos modelos que tratam da a tomada de decisão, envolvendo a identificação e realização melhoria de processos em níveis. No CMMI (Capability Ma­ de ações corretivas e preventivas que orientem os projetos e turity Model Integration), a medição encontra-se no nível 2 processos a alcançarem os objetivos para eles estabelecidos. (área de processo Medição e Análise) e no MR MPS (Modelo de Resumindo: organizações de software que buscam a melhoria Referência para Melhoria de Processo de Software Brasileiro) de seus processos precisam realizar medição de software. encontra-se no nível F (processo Medição). Considerando essa afirmação, neste artigo são discutidas algumas questões relacionadas à medição de software e são Medição de Software nas Organizações apresentadas algumas propostas que apóiam a definição Para que a medição de software seja eficientemente reali­ do processo de medição de software e sua realização nas zada em uma organização, e dê o retorno necessário para organizações. ser percebida como prática fundamental à sobrevivência e É importante destacar que o objetivo aqui não é “ensinar como ao crescimento organizacional, sua implementação deve ser realizar a medição”, e sim discutir questões relacionadas a esse orientada para apoiar a tomada de decisão nos âmbitos técnico contexto. Para isso, inicialmente são apresentados o conceito e de negócios. Esse é o principal diferencial entre as organi­ e um breve histórico da medição de software. Em seguida, a zações que se beneficiam com os resultados de seu programa utilização da medição de software nas organizações é discu­ de medição e as organizações que simplesmente despendem tida e, por fim, algumas propostas que apóiam a definição do tempo e esforço para acumular dados inúteis. processo de medição e sua execução são descritas. Organizações de software bem sucedidas geralmente imple­ mentam a medição como parte de suas atividades, englobando Conceito e Histórico os níveis técnico, gerencial e estratégico. Nessas organizações, a Medição de software é uma avaliação quantitativa de qual­ medição provê a informação necessária às tomadas de decisão quer aspecto dos processos e produtos da Engenharia de que impactam no desempenho técnico e de negócio, sendo essa Software, que permite seu melhor entendimento e, com isso, informação disponibilizada para os tomadores de decisão em auxilia o planejamento, controle e melhoria do que se produz todos os níveis da organização, de acordo com seus objetivos. e de como é produzido (BASS et al., 1999). O elemento básico Um gerente de projetos pode, por exemplo, utilizar as informa­ da medição, que propicia a análise quantitativa, são as medi­ ções providas pela medição para realizar uma comunicação mais das, as quais caracterizam, em termos quantitativos, alguma eficiente, traçar os objetivos específicos dos projetos, identificar propriedade de um objeto da Engenharia de Software. e corrigir problemas antecipadamente, tomar decisões chave e O objetivo mais importante da aplicação da medição de sof­ justificar tais decisões. Mas é importante ressaltar que, assim tware é prover informação quantitativa para apoiar a tomada como qualquer outra ferramenta gerencial ou técnica, a medição de decisões. Em outras palavras, as organizações de software não é capaz de garantir o alcance dos objetivos. Entretanto, ela é definem medidas e coletam dados que, ao serem analisados, capaz de auxiliar os tomadores de decisão a terem uma aborda­ possam fornecer informações que sejam úteis à tomada de gem pró-ativa às questões críticas inerentes aos projetos, o que decisões, que envolve a análise do alcance aos objetivos esta­ contribui para que os objetivos sejam alcançados. belecidos e identificação de ações corretivas e de melhoria. Além de apoiar fortemente a tomada de decisão, a medição A medição de software começou a ser praticada na década de auxilia e acelera o aprendizado organizacional, uma vez que 70, inicialmente apenas para medir o número de linhas de código a análise dos dados coletados nos projetos provê a funda­ dos programas produzidos. Na década de 80, outras medidas – ção necessária para o aprendizado através de cada projeto relacionadas às fases finais do desenvolvimento – começaram e, consequentemente, para o aprendizado organizacional. a ser utilizadas, porém os objetivos da realização da medição Também auxilia a organização a perceber e entender as nas organizações não eram explícitos ou, se eram, não eram diferenças entre o seu desempenho e o desempenho exigido compreensíveis aos seus membros, resultando em medições pelo mercado, permitindo que ela otimize seus processos inúteis não alinhadas às necessidades das organizações ou dos técnicos e de negócio, quando necessário. Isso é possível, pois projetos. Nos anos 90, impulsionados por algumas aplicações as medidas coletadas nos projetos da organização podem ser bem sucedidas, foram desenvolvidos modelos para o processo combinadas e, através da utilização de diferentes técnicas, de medição baseados na melhoria de processos e nos princípios analisadas para satisfazer as diferentes necessidades de in­ da qualidade total, fornecendo as diretrizes e a infraestrutura formação organizacionais. básicas para definir, coletar, validar e analisar medidas. As organizações podem, ainda, utilizar as informações Atualmente, a medição de software é considerada um dos providas pela medição para elaborar planos realistas para os temas mais importantes na Engenharia de Software quando se projetos, comparar o desempenho dos projetos correntes com fala em melhoria de processos. Enquanto, no passado, muitas seus planos, orientar os investimentos e decisões de melhoria organizações de software não reconheciam a importância das de processos e auxiliar a prever se os projetos em andamento atividades de medição e as tratavam apenas como “mais uma irão alcançar os objetivos inicialmente estabelecidos. Essas são coisa a ser feita”, hoje ela é considerada uma prática básica da ações comuns em organizações de software maduras, onde Engenharia de Software, sendo evidenciada por sua inclusão há utilização da medição em todo o ciclo de vida do software 32 Engenharia de Software Magazine - Medição de Software
  • 33.
    processo e as informaçõesobtidas são consideradas e utilizadas como que identifica as atividades do processo de medição que são recurso estratégico na condução desse ciclo. requeridas para especificar que informações de medição Somente quando as informações obtidas na análise dos dados são necessárias, como as medidas serão definidas, como os coletados são utilizadas para direcionar as ações necessárias dados serão coletados, como os resultados serão analisados às organizações e seus projetos, é que o objetivo fundamental e como avaliar se os resultados são válidos. O processo da medição é alcançado e percebido pelas organizações, fator de medição definido na ISO/IEC 15939 consiste de quatro que contribui para a real institucionalização de um programa atividades que são sequenciadas em um ciclo iterativo, per­ de medição eficiente. mitindo feedback e melhoria contínua do processo. Ele é uma Uma vez que a medição de software é implantada e executada adaptação do ciclo PDCA (Plan-Do-Check-Act), comumente corretamente em uma organização, torna-se possível passar à utilizado como base para a melhoria da qualidade. Suas ati­ melhoria de processos. vidades são: (i) estabelecer e manter comprometimento com Melhoria de processos de software é uma abordagem para de­ a medição; (ii) planejar o processo de medição; (iii) executar finição, organização e implementação de processos de software o processo de medição; e, (iv) avaliar a medição. que sejam eficientes para uma organização (KILPI, 2001). O processo de medição proposto pela ISO/IEC 15939 é Implantar melhoria de processos em uma organização baseia-se orientado às necessidades de informação da organização. fundamentalmente na identificação e realização das mudanças Para cada necessidade de informação, o processo gera um que levam à melhoria dos processos. Para isso, inicialmente a produto de informação, a fim de satisfazer a necessidade de medição é utilizada para identificar as necessidades de mudanças. informação identificada. Para isso, o processo considera um Posteriormente, quando as mudanças são realizadas, a medição Modelo de Informação de Medição, que estabelece a ligação é utilizada para avaliar os resultados das alterações. Em outras entre as medidas definidas e as necessidades de informação palavras, a melhoria de processos é um ciclo contínuo no qual a identificadas. A Figura 1 apresenta o Modelo de Informação medição é um dos principais pilares. de Medição definido na ISO/IEC 15939. Abordagens para Medição de Software Existem na literatura técnica algumas abordagens que tratam a medição de software e apóiam a definição do processo de medição, bem como sua execução. Algumas dessas abordagens propõem processos para a realização da medição, outras definem modelos de informação que estabelecem a estrutura de informação considerada pela medição e outras incluem propostas tanto para o processo de medição quanto para o modelo de informação. O processo de medição pode ser definido como um conjun­ to de passos que deve orientar a realização da medição em uma organização. Um processo de medição eficiente é fator crítico ao sucesso da medição na organização, pois é ele que direciona as atividades a serem realizadas para que, com os resultados da análise dos dados coletados, seja possível a identificação de tendências e antecipação aos problemas, a fim de prover melhor controle dos custos, redução dos riscos, melhoria da qualidade e, consequentemente, alcance dos objetivos técnicos e de negócio (WANG e LI, 2005). Figura 1. Modelo de Informação de Medição da ISO/IEC 15939 Apesar das propostas existentes possuírem diferenças entre si, percebe-se que, no âmbito do processo de medição, De acordo com o Modelo de Informação de Medição, as ne­ as definições propostas consistem basicamente de quatro cessidades de informação são atendidas por conceitos men­ etapas: (i) definição das medidas; (ii) coleta das medidas; suráveis definidos em relação às entidades que podem ser (iii) análise das medidas coletadas; e, (iv) utilização dos medidas. Essas entidades possuem atributos aos quais são resultados da análise em ações. aplicados métodos de medição para obter medidas base que A seguir são apresentadas as principais abordagens de são associadas através de funções de medição para compor medição de software. medidas derivadas1. Medidas são analisadas por modelos de • ISO/IEC 15939 - Software Engineering – Software Mea- análise e fornecem indicadores cuja interpretação representa surement Process A norma ISO/IEC 15939 define uma das abordagens mais conhecidas para o processo de medição. Segundo essa nor­ 1 Medidas base são funcionalmente independentes de outras medidas, enquanto que medidas derivadas são definidas como função de duas ou mais ma, um processo de medição é descrito como um modelo medidas (ISO/IEC, 2002) Edição 24 - Engenharia de Software Magazine 33
  • 34.
    produtos de informaçãoque atendem as necessidades de ser decompostos em subfatores que, por sua vez são, também, informação inicialmente identificadas. quantificados por medidas. Baseando-se no framework definido, o IEEE Std 1061-1998 • IEEE Std 1061-1998 – IEEE Standard for a Software Quality propõe um processo de medição composto por cinco ativida­ Metrics Methodology des: (i) estabelecer os requisitos da qualidade de software; (ii) O IEEE Std 1061-1998 provê um framework para medidas de identificar as medidas de qualidade de software; (iii) imple­ qualidade de software e um processo de medição de qualidade mentar as medidas; (iv) analisar os resultados das medidas; e de software para estabelecer requisitos de qualidade e iden­ (v) validar as medidas. tificar, implementar, analisar e validar medidas de qualidade • Practical Software Measurement – PSM de processo e de produto. PSM é uma abordagem para medição de software orientada Na Figura 2 é apresentado o framework para medidas de qua­ às necessidades de informação organizacionais aderente lidade de software definido no IEEE Std 1061-1998. à ISO/IEC 15939 e, como ela, possui dois componentes: No primeiro nível são estabelecidos os requisitos de qua­ um Modelo de Informação de Medição e um Processo de lidade do sistema (representado na Figura 2 pelo item Qua­ Medição. lidade de Software do Sistema) através da identificação de O Modelo de Informação de Medição, assim como na ISO/ atributos de qualidade (por exemplo, Confiabilidade). Fatores IEC 15939, tem como objetivo estabelecer a ligação entre as de qualidade são, então, definidos para representar a visão medidas definidas e as necessidades de informação iden­ dos atributos de qualidade segundo a gerência e o usuário. tificadas. Para isso, como mostra a Figura 3, o modelo de Para cada fator de qualidade é identificada uma medida para informação representa a evolução de uma necessidade de representá-lo quantitativamente. Por exemplo: o atributo de informação até o Plano de Medição. qualidade Confiabilidade pode ser representado pelo fator A partir das necessidades de informação, conceitos mensu­ de qualidade Tolerância a falhas, quantificado pela medida ráveis, que indicam o que deve ser medido para atendê-las, Tempo médio entre falhas. Se necessário, os fatores podem devem ser identificados e modelados em um construtor de Figura 2. Framework para medidas de qualidade do IEEE Std 1061-1998 Figura 3. Modelo de Informação de Medição 34 Engenharia de Software Magazine - Medição de Software
  • 35.
    processo medição para estabelecerexatamente que medidas de que alcance dos objetivos organizacionais. Uma das abordagens atributos são necessárias. A partir daí, o mecanismo de mais conhecidas é o Goal Question Metric - GQM que consi­ coleta e organização dos dados de uma ou várias instân­ dera que, para cada objetivo estabelecido, é possível determi­ cias do construtor de medição deve ser definido. O Plano nar questões cujas respostas estão associadas a medidas. A de Medição é o resultado formal que agrupa todos os itens Figura 4 apresenta um exemplo para a relação de um obje­ anteriores. tivo de negócio, suas questões e medidas associadas. Sendo aderente à ISO/IEC 15939, a relação entre neces­ Após serem definidas, as medidas devem ser coletadas e sidades de informação e conceito mensurável do Modelo analisadas. O objetivo de analisar os dados das medidas é de Informação do PSM equivale à relação entre esses itens tornar qualquer padrão, tendência ou relacionamento mais presente no Modelo de Informação de Medição da ISO/ visível, a fim de que estes possam auxiliar nos julgamen­ IEC 15939 (representado no lado esquerdo da Figura 1). O tos necessários às tomadas de decisão. Durante a análise, construtor de medição, por sua vez, inclui os demais itens medidas que fornecem informações sobre o alcance dos presentes no Modelo de Informação da ISO/IEC 15939 (de­ objetivos são transformadas em indicadores. Os indicadores mais itens representados na Figura 1). são medidas base ou medidas derivadas que, associadas a Considerando o modelo de informação definido, o PSM critérios de avaliação ou decisão pré-definidos, são capazes propõe um processo de medição composto por quatro de fornecer informações que descrevem o alcance dos obje­ fases: (i) planejamento; (ii) execução; (iii) avaliação; e (iv) tivos estabelecidos. São inicialmente definidos no Plano de comprometimento. Medição, mas à medida que novas necessidades são identi­ ficadas, novos indicadores devem ser definidos. Observando-se as primeiras etapas dos processos de Em relação à análise dos dados coletados para as medidas, medição propostos nas abordagens apresentadas, nota-se é importante observar que, ao longo da execução de um que elas são responsáveis pela identificação e definição das processo de medição, o foco da análise muda de acordo com medidas, bem como pela associação destas aos objetivos a fase do ciclo de vida dos projetos nos quais a medição é organizacionais. Essas etapas são de grande importância aplicada. Tipicamente são considerados três tipos de análise: para a medição, pois são elas que definem que informações (i) análise de estimativas, utilizada principalmente no início serão fornecidas para apoiar as tomadas de decisão. do projeto, para apoiar o planejamento ou replanejamentos; Essa tarefa pode parecer simples, mas não é, principalmente (ii) análise de viabilidade, utilizada quando o Plano do em organizações de software. Para que as atividades de me­ Projeto está próximo de ser concluído, para determinar se dição estejam alinhadas aos objetivos de negócio, é preciso os planos e metas nele estabelecidos são realísticos e al­ identificar os fatores críticos que são capazes de determinar cançáveis; e (iii) análise de desempenho, utilizada durante se os objetivos de negócio serão ou não alcançados. Consi­ a execução do projeto para determinar se ele está indo ao derando essa questão, há algumas abordagens que apóiam a encontro dos planos e metas definidos. A Figura 5 ilustra identificação e seleção de medidas adequadas à avaliação do os três tipos de análise. Figura 4. Exemplo de aplicação do GQM Edição 24 - Engenharia de Software Magazine 35
  • 36.
    projetos. Também apóiaa melhoria de processos no nível or­ ganizacional, fornecendo informações resultantes da análise dos dados coletados ao longo dos projetos, que podem ser utilizadas para orientar ações de melhoria nos processos. Neste artigo foram discutidos alguns aspectos relevantes à aplicação da medição de software em organizações que buscam a melhoria de processos, tendo sido enfatizada a necessidade do alinhamento entre a medição e os objetivos organizacionais. Dê seu feedback sobre esta edição! Feedback eu s Dê A Engenharia de Software Magazine tem que ser feita ao seu gosto. sobre e Para isso, precisamos saber o que você, leitor, acha da revista! s ta edição Dê seu voto sobre este artigo, através do link: www.devmedia.com.br/esmag/feedback Referências Figura 5. Tipos de análise BASILI, V. R., ROMBACH, H. D., CALDIERA, G., 1994, Goal Question Metric Paradigm, Encyclopedia of Software Engineering, 2 Volume Set, John Wiley & Sons, Inc. No início de um projeto, é necessário estabelecer as es­ timativas para sua realização, principalmente as relacio­ BASS, L., BELADY, L., BROWN, A., FREEMAN, P., ISENSEE, S., KAZMAN, R., KRASNER, H., MUSA, nadas a tempo, custo e esforço. Dados do projeto corrente J., PFLEEGER, S., VREDENBURG, K., WASSERMAN, T., 1999, Constructing Superior Software, e de projetos anteriores são utilizados para calcular essas Software Quality Institute Series, Macmillan Technical Publishing. estimativas. O Plano do Projeto é então elaborado. Quando BRIMSON, J. A., 2004, Stop Cane Dancing and Integrate Statistical Process Control (SPC) into your sua elaboração está em fase conclusiva, dados das medidas Process Based Management System, Measurement Business Excellence, v. 8, n. 2, p. 15-22. coletadas orientam a análise de viabilidade dos planos estabelecidos, indicando os riscos envolvidos e fornecendo CHRISSIS, M. B., KONRAD, M., SHRUM, S., 2006, CMMI (Second Edition): Guidelines for Process diretrizes para que sejam traçadas outras alternativas, caso Integration and Product Improvement, Addison-Wesley. necessário. Quando o projeto é executado, é importante que DEMING, W. E., 1986, Out of Crises, Massachusetts Institute of Technology, Center of Advanced seu status seja conhecido, bem como seu desempenho em Engineering, Cambridge. relação aos planos estabelecidos e possíveis problemas re­ ISO/IEC, 2007, ISO/IEC 15939 (E) Software Engineering - Software Measurement Process, lacionados. A análise de desempenho é quem fornece essas International Organization for Standardization and the International Electrotechnical informações, através da análise dos valores das medidas Commission, Geneva, Switzerland. coletadas ao longo do projeto, e relacionamento destas com os objetivos estabelecidos nos planos. KILPI, T., 2001, Implementing a Software Metrics Program at Nokia, IEEE Software, v. 18, n. 6, p. 72-77. Considerações Finais McGARRY, J., CARD, D., JONES, C., LAYMAN, B., CLARK, E., DEAN, J., HALL, F., 2002, Pratical Software Atualmente as organizações de software têm reconhecido a Measurement: Objetive Information for Decision Makers, Addison Wesley, Boston, USA. necessidade de possuírem processos de software que sejam capazes de atender às demandas de qualidade e produti­ NIESSINK, F., VLIET, H., 2001, Measurement Program Success Factors Revisited, Information and vidade do mercado. Processos com essa característica são Software technology, v. 43, n. 10, p. 617-628. resultado da gerência eficiente dos processos e projetos, que SOFTEX, 2009, MPS.BR: Melhoria de Processo do Software Brasileiro - Guia Geral : 2009, leva à sua melhoria, contexto no qual a medição de software Disponível em: http://www.softex.br/mpsbr. é atividade primária. A medição apóia a melhoria no nível dos projetos, uma vez WANG, Q., LI, M., 2005, Measuring and Improving Software Process in China, In Proceedings que fornece a base necessária para a realização de planos of International Symposium on Empirical Software Engineering - ISESE 2005, Hoosa Head, realísticos e controle destes ao longo de sua execução nos Australia, p. 183-192. 36 Engenharia de Software Magazine - Medição de Software
  • 37.
    processo Edição 24 -Engenharia de Software Magazine 37
  • 38.
    Agilidade Nesta seção você encontra artigos voltados para as práticas e métodos ágeis. A Comunicação no Processo de Software O papel cada vez mais decisivo da comunicação no processo de software De que se trata o artigo? Neste artigo veremos o quanto o processo de software é permeado pelo processo de co- municação interpessoal. Não se trata de um processo apenas técnico, mas também social. Com o advento do paradigma de desenvolvi- mento rápido de software, destacamos o O s avanços na área da tecnologia papel cada vez mais decisivo da comunicação têm permitido ao longo dos interpessoal com a utilização de métodos últimos anos grande informa­ ágeis no desenvolvimento de software. tização nos processos das organizações. No entanto, dispor de um sistema de Para que serve? software que atenda as diversas neces­ O artigo busca identificar meios de ameni- sidades da gestão organizacional pode zar as barreiras de comunicação na gestão se tornar um processo complexo. Isso de processos de software. Não se tem a implica, muitas vezes, em desenvolver pretensão de esgotar o assunto, mas propor ou customizar um sistema. Mas não é só uma reflexão acerca do tema, levantado por isso: os sistemas de software precisam diversos autores no campo da engenharia de evoluir para acompanhar os modelos de software. gestão e, neste contexto passam obriga­ toriamente por manutenções que podem Em que situação o tema é útil? ser melhorias, otimizações e até mesmo Na gestão e execução de processos de sof- reparos. Segundo Pfleeger (2004), estas tware que necessitam de constantes adapta- manutenções abrangem qualquer alte­ ções e integrações. Neste contexto, a comu- ração ou correção efetuada num sistema nicação entre usuário e analista costuma ser Márcia Regina Simm Cantú que já está sendo utilizado, uma vez que muito intensa, o que exige uma grande habi- macantu@bewnet.com.br sua vida útil não acaba com a entrega. A lidade de comunicação interpessoal, princi- Bacharel em Ciência da Computação; atua como analista de sistemas desde 2001. grande maioria dos sistemas de softwa­ palmente por parte do analista de sistemas. re deve ser construída para incorporar 38 Engenharia de Software Magazine - A Comunicação no Processo de Software
  • 39.
    processo mudanças: seja porqueo usuário decidiu realizar seu processo confirmação de recebimento, é Griffin (2006) quem destaca a etapa de maneira diferente, seja porque houve alguma alteração de de feedback no processo de comunicação. Trata-se de um retorno leis ou normativas municipais, estaduais ou mesmo federais com relação ao recebimento da mensagem: é a certeza de que o que regulamentam os requisitos do sistema. receptor recebeu a mensagem e a compreendeu. Isso eliminaria Num processo de software, tanto no desenvolvimento de um a ocorrência do ruído, tornando a comunicação eficaz. sistema novo quanto na manutenção de um sistema existente, as Apesar de parecer um processo simples, nem sempre, no en­ atividades relacionadas à etapa de levantamento de requisitos tanto, a mensagem enviada é igual à mensagem recebida. Isso só representam um papel fundamental exatamente por constituí­ ocorre porque o processo de comunicação é permeado ainda pelas rem o alicerce para as fases subsequentes de desenvolvimento. O características das pessoas envolvidas. De acordo com Chiavenato levantamento de requisitos, de acordo com Sommerville (2007), (1994), a comunicação é uma troca composta por palavras, letras reflete as necessidades de um usuário e descrevem os serviços ou símbolos e engloba pensamentos, opiniões ou informações. que o sistema deve fornecer. Sendo assim, este não é um pro­ Neste sentido, o processo de comunicação é influenciado forte­ cesso apenas técnico, mas também social, uma vez que depende mente pela subjetividade humana, independente do ambiente fortemente de um entendimento entre os atores envolvidos, no em que ocorre ou da forma como se dá. caso, o analista de sistemas e o usuário. Para Pressman (2006), o Do ponto de vista organizacional, segundo Griffin (2006), a levantamento de requisitos é uma atividade com comunicação comunicação tem o propósito de coordenar e orientar as metas intensiva. O autor reforça a tese de que o ruído na comunicação propostas. Isso só é possível com a troca de informações. Essa entre usuário e analista pode acarretar muitas dificuldades para troca permite o entendimento do que deve ser feito e como. Griffin o desenvolvimento e/ou manutenção do sistema. Nesse sentido, (2006, p.188) afirma ainda que: “A comunicação organizacional é necessário estudar e compreender como ocorre o processo de expressa sentimentos e emoções. Por isso está longe de ser uma comunicação a fim de buscar maneiras de minimizar as barrei­ coleção de fatos e números. Os funcionários, como acontece em ras da comunicação na gestão do processo de software. qualquer lugar do mundo, precisam comunicar emoções como felicidade, raiva, desprazer, confiança e medo”. O Processo de Comunicação Para Chiavenato (1994), a comunicação nas organizações difi­ De acordo com Reti (2008), vive-se em um mundo de lingua­ cilmente ocorre sem problemas. O autor chama a atenção para o gens próprias. Pode-se falar o mesmo idioma, mas usam-se fenômeno da transformação que ocorre no decorrer desse proces­ diferentes linguagens. Por isso, às vezes, não há um entendimen­ so, que faz com que o receptor receba uma mensagem diferente to adequado. Em função de cada indivíduo ter características daquela enviada pelo emissor. Essa transformação é provocada intrínsecas, grande parte das dificuldades de entendimento vem por três problemas principais, no entender do autor: da forma como cada um interpreta os fatos e a comunicação. • Omissão: supressão de conteúdo da mensagem; Até as próprias palavras podem ter significado único para cada • Distorção: alteração do conteúdo da mensagem; uma das pessoas do processo de comunicação. A expressão no • Sobrecarga: incapacidade de processar o volume de informa­ stress para o surfista é um tipo de onda ruim porque não tem ções da mensagem, seja para o envio, seja para o recebimento altura; para outros, significa “estar numa boa”. – provoca omissão e contribui para a distorção. O processo de comunicação é composto por cinco etapas, de acordo com Chiavenato (1994): Mas, além desses problemas que transformam o processo de • Emissor ou fonte: é a pessoa, coisa ou processo que emite comunicação, Chiavenato (1994) destaca ainda as barreiras da a mensagem; comunicação, fatores que podem interferir nas etapas da comu­ • Transmissor ou codificador: elo que liga a fonte ao canal, nicação comprometendo o resultado final da mensagem enviada. equipamento que transporta a mensagem codificada; São exemplos de barreiras da comunicação: ideias preconcebidas, • Canal: espaço entre transmissor e receptor por onde a men­ significados pessoais, emoções, estado de ânimo, entre outras. sagem trafega; A especialização das pessoas nas organizações é, todavia, o • Receptor ou decodificador: equipamento que recebe a fator que mais influencia a comunicação no tocante ao processo mensagem e a decodifica. Se a comunicação é oral, a recepção de software. Apontada como uma barreira da comunicação é garantida por meio de uma boa audição; por Megginson (1998), a especialização pode formar grupos • Destino: é a pessoa, coisa ou processo para o qual a men­ com interesses, comportamentos e até mesmo vocabulário sagem é enviada. próprios. Tome-se, por exemplo, uma das etapas mais críticas do Processo de software: o levantamento de requisitos. Imagine Existe ainda um elemento que deve ser acrescentado ao o analista de sistemas interagindo com o usuário, cada qual Processo de Comunicação: o ruído. O ruído é uma interferên­ sintonizado nos seus conhecimentos técnicos. Não vai haver cia, um aspecto que prejudica a transmissão da mensagem e entendimento, não vai haver comunicação. distorce o seu significado. Estima-se que em todo o processo Na concepção de Griffin (2006, p.192), a “comunicação é um de comunicação exista ruído, em maior ou menor grau. processo social em que duas ou mais partes trocam informações Embora Chiavenato (1994) afirme que a comunicação é um ou compartilham significados. Trata-se de um processo de mão- processo bidirecional e que necessita de um sinal de retroação ou dupla e que acontece durante um certo tempo”. Edição 24 - Engenharia de Software Magazine 39
  • 40.
    Sendo assim, paraque ocorra comunicação e se alcancem os • Projeto: definição da estrutura de dados do sistema, sua arqui­ objetivos desta fase do processo de software, o usuário deve ser tetura, detalhes procedimentais e caracterização da interface; capaz de expressar suas necessidades numa linguagem que o • Codificação: implementação do sistema em linguagem de analista de sistemas entenda e o analista de sistemas deve ser máquina; capaz de externar para o usuário o que entendeu. • Teste: validação dos aspectos lógicos internos do software, bem como dos aspectos funcionais externos, a fim de garantir O Processo de Software que o sistema atenda as especificidades; Para Sommerville (2007, p. 42), “um processo de software • Manutenção: tratamento de erros encontrados e adaptação é um conjunto de atividades que leva à produção de um para novas funcionalidades. É importante salientar que a ma­ produto de software”, no entanto, cada vez mais se aplica nutenção de um sistema de informação reaplica cada uma das o desenvolvimento de software para customizar sistemas etapas precedentes do ciclo de vida ao sistema existente. existentes. A Figura 1 ilustra o paradigma do ciclo de vida clássico da Engenharia de Software, conhecido também por De acordo com Pressman (2006), uma compreensão completa “modelo em cascata”. dos requisitos do sistema de informação é fundamental para um bem-sucedido desenvolvimento de sistema. Não importa Análise quão bem projetado ou quão bem codificado seja, o sistema mal especificado não atenderá as necessidades do usuário Requisitos e trará aborrecimentos e retrabalho ao desenvolvedor. Essa constatação torna a etapa de levantamento de requisitos ex­ Projeto tremamente crítica para o sucesso do processo de software. Como o levantamento de requisitos está relacionado com Codificação a definição do que o sistema deve fazer, para Sommerville (2007), esta etapa pode ser descrita como o processo de Teste comunicação entre usuário e analista e, nesse sentido, os requisitos podem ser influenciados pelas preferências, recu­ Manutenção sas e preconceitos dos usuários, além de questões políticas e organizacionais. Essas diferenças de entendimento estão Figura 1. Ciclo de vida clássico - Fonte: Pressman (2006, p. 33) intimamente ligadas ao processo de comunicação, uma vez que a etapa de levantamento de requisitos decorre, basica­ Nessa visão clássica, o desenvolvimento de software se dá mente, da interação entre analista de sistemas e usuário. É seguindo etapas predefinidas que não iniciam antes do tér­ importante salientar que essas preferências, recusas e pre­ mino da etapa anterior, muito embora, na prática, observe-se conceitos podem surgir também por intermédio do próprio que essas etapas se sobrepõem e trocam informações entre si. analista de sistemas. Se, de um lado, o usuário afirma: “Não Pressman (2006) conceitua as etapas do ciclo da vida como: era bem isto que eu queria!”, em contrapartida, é muito co­ • Análise: definição dos serviços e objetivos do sistema; mum ouvir um analista de sistemas se queixar: “O usuário • Requisitos: descrição detalhada em linguagem natural não sabe o que quer!”. do que o sistema deve fazer. Definem as funções, serviços e A Tabela 1 lista alguns destes estereótipos mais comuns restrições operacionais do sistema (deve definir exatamente observados no relacionamento entre desenvolvedores de o que será implementado); sistemas e usuários. Como os desenvolvedores vêem os usuários Como os usuários vêem os desenvolvedores Os usuários não sabem o que querem. Os desenvolvedores não entendem as necessidades operacionais. Os usuários não conseguem articular o que querem. Os desenvolvedores dão muita ênfase ao aspecto técnico. Os usuários têm muitas necessidades puramente políticas. Os desenvolvedores tentam nos dizer como fazer nosso trabalho. Os usuários querem tudo imediatamente. Os desenvolvedores não conseguem transformar as necessidades em um sistema bem-sucedido. Os usuários não sabem priorizar as necessidades. Os desenvolvedores dizem não o tempo todo. Os usuários se recusam a se responsabilizar pelo sistema. Os desenvolvedores estão sempre ultrapassando o orçamento. Os usuários são incapazes de fornecer uma declaração aproveitável sobre suas necessidades. Os desenvolvedores estão sempre atrasados. Os usuários não estão comprometidos com os projetos de desenvolvimento de sistemas. Os desenvolvedores pedem aos usuários que dediquem seu tempo e esforço, mesmo que em detrimento de suas responsabilidades principais. Os usuários não querem se comprometer. Os desenvolvedores definem padrões não-realistas para a definição de requisitos. Os usuários não conseguem seguir o cronograma. Os desenvolvedores são incapazes de responder rapidamente a legítimas necessidades de mudança. Tabela 1. Como usuários e desenvolvedores vêem uns aos outros - Fonte: Pfleeger (2004, p. 142) 40 Engenharia de Software Magazine - A Comunicação no Processo de Software
  • 41.
    processo Acomunicação, neste contexto, fica bastante comprometida, terminada a fase de levantamento de requisitos, o que pode uma vez que esta relação social só pode se concretizar se hou­ comprometer todo o cronograma de um projeto. ver respeito mútuo, que surge da aceitação do outro. De acordo Num ambiente em que o desenvolvimento e a pronta entrega com Maturana (2001), “sem a aceitação do outro na convivência, são as principais premissas para um sistema, o ciclo de vida não há fenômeno social”. O usuário não pode ser um problema clássico talvez não seja a metodologia mais adequada, sendo para o analista de sistemas: o usuário é a sua razão de ser. considerada um tanto burocrática e pesada. Especialmente na Koscianski (2007) aponta ainda um dos problemas mais co­ década de 90, com a expansão da tecnologia nas pequenas e nhecidos no processo de software: a negociação de requisitos médias empresas, essa situação começou a se tornar inviável, entre usuário e analistas. Como a entrevista é, provavelmente, o que levou alguns desenvolvedores de sistema a estudarem a técnica mais comum de levantamento de requisitos de siste­ métodos mais leves e rápidos. Mas foi em 2001 que alguns mas, as dificuldades de comunicação durante a especificação desenvolvedores, produtores e consultores de software assina­ de requisitos devem merecer atenção especial. ram o “Manifesto para o Desenvolvimento Ágil de Software”. A entrevista é composta por questões sobre o sistema for­ Este manifesto declarava a descoberta por melhores modos muladas pelo analista de sistemas, derivando os requisitos de desenvolvimento de software, baseados em indivíduos e das respostas dadas pelos usuários a essas questões. Essas suas interações, softwares funcionais, colaboração do cliente entrevistas podem ser fechadas, respondendo os usuários e resposta a modificações. a perguntas predefinidas; ou abertas, que não seguem um roteiro. As entrevistas abertas permitem uma compreensão Desenvolvimento rápido de software, uma possível maior acerca das necessidades do usuário, uma vez que o solução? usuário pode discorrer livremente sobre as suas atividades Os métodos ágeis de software enfocam principalmente de trabalho. Mas isso pode tornar o processo mais trabalhoso a especificação, o projeto e a implementação de software. para o analista, que necessita de um grande poder de síntese São metodologias que envolvem o usuário em praticamente para organizar essas informações de forma estruturada. Além todas as fases do processo, garantindo assim que possíveis disso, conforme Pressman (2006), frequentemente as informa­ mudanças nos requisitos possam ser corrigidas em tempo ções fornecidas por um usuário se confundem ou entram em real. O foco nessas metodologias é a comunicação interativa, conflito com outras informações fornecidas por outros usuários pois não existe uma única etapa em que usuário e analista envolvidos. Isso exige, em muitos casos, a utilização de técnicas interagem, mas várias. Nesse contexto os usuários podem adicionais nesta fase de levantamento de requisitos. vir a comunicar-se com toda a equipe de desenvolvimento, Sommerville (2007) sugere as técnicas de Cenários e Casos de e não apenas com o analista, o que valoriza a cooperação Uso. A técnica de Cenários caracteriza-se por uma descrição entre usuários e desenvolvedores em detrimento do forte de exemplos de interação do mundo real que o sistema deve planejamento proposto pelo ciclo de vida clássico do processo atender. A técnica de Casos de Uso baseia-se em cenários e de software. identifica o tipo de interação e quais agentes (sistema, usu­ Sommerville (2007) aponta a Extreme Programming como o ário, etc.) estão envolvidos. Usualmente essas técnicas são método ágil mais conhecido, citando ainda o Scrum, Crystal, utilizadas em conjunto e podem fazer toda a diferença para entre outros. Todos esses métodos possuem como característica tornar a etapa de levantamento de requisitos mais eficaz. Não comum o desenvolvimento iterativo, propondo, no entanto, obstante, todas as técnicas resultam de alguma interação com maneiras diferentes para o conseguir. Num desenvolvimento o usuário. Assim, a comunicação é algo inerente à etapa de iterativo, cada iteração é uma etapa do projeto de software. levantamento de requisitos e precisa ser bem resolvida, a fim Assim, com o foco na comunicação entre usuários e analista/ de que o produto final de software atenda às necessidades do desenvolvedores, o projeto vai sendo validado e incrementado usuário no prazo estipulado. a cada etapa. É isso que garante que as mudanças no projeto Como o desenvolvimento do software decorre principalmen­ sejam bem-vindas e que o sistema seja entregue num prazo te da etapa de levantamento de requisitos, é importante que mais curto, de acordo com as necessidades do usuário. Um este mapeamento seja bem construído. Dentre as vantagens da envolvimento maior entre usuário e analista de sistemas pode utilização do modelo de desenvolvimento de software baseado gerar maior compreensão acerca dos requisitos do sistema e no ciclo de vida clássico cita-se a documentação das etapas, desfazer possíveis erros de interpretação. Além disso, a con­ o que gera maior consistência para as fases subsequentes. vivência, por promover o companheirismo e a cooperação, No entanto, Sommerville (2007) aponta a divisão inflexível pode diminuir a distância técnica entre esses profissionais, de etapas como uma grande desvantagem, tendo em vista a quebrando barreiras e preconceitos, resultando num produto dificuldade de reagir às mudanças inerentes do projeto. De­ que atende às necessidades do usuário e que proporcione terminadas diferenças de entendimento sobre o que o sistema maiores resultados à empresa. deve contemplar podem ser descobertas apenas na etapa final O que fica evidente, no tocante à comunicação, é que o grande de teste, o que obriga o retorno às fases iniciais de análise e trunfo dos métodos ágeis se dá pelo envolvimento do usuário levantamento de requisitos para readequações, alerta o autor. em todo o processo de software, e não apenas numa fase ini­ Verdadeiramente, podem ocorrer mudanças antes mesmo de cial, a exemplo da metodologia do ciclo de vida clássico. No Edição 24 - Engenharia de Software Magazine 41
  • 42.
    entanto, é importanteressaltar que essa interação maior com seja o maior aliado no processo de software, uma vez que o usuário não garante a superação das barreiras de comuni­ permite que tanto o usuário quanto o analista de sistemas cação, podendo até mesmo agravá-las. Falhas e barreiras na saiba se o que disseram um ao outro foi compreendido. comunicação podem fazer-se presentes em qualquer momento Todas essas premissas não se constituem numa lista de pré- de interação. Além disso, caso o escopo não tenha sido bem requisitos básicos para garantir a eficácia da comunicação especificado, corre-se o risco de não ter um sistema pronto num processo de software, mas podem servir como base na nunca, uma vez que a cada iteração o usuário pode rever os busca da superação das suas barreiras. E para isso não faz requisitos e propor mudanças. diferença a utilização de métodos ágeis ou a metodologia Mas não é necessário escolher entre os métodos ágeis e o ciclo de ciclo de vida clássico: aumentar a interação com usuários de vida clássico. A agilidade não abstrai disciplina e processo pode significar aumentar as barreiras de comunicação, caso no desenvolvimento de software. Sendo assim, uma alternativa o processo de comunicação entre usuário e analistas de sis­ é considerar um modelo híbrido de processo de software que temas não seja eficaz. contemple certo planejamento, de acordo com o modelo de Nesse sentido, é imprescindível que toda e qualquer inte­ ciclo de vida clássico, aliado à intensificação do envolvimento ração entre usuário e analista de sistemas prime pela clareza do usuário, proposto pelos métodos ágeis. na comunicação, focada no respeito mútuo e aliada, princi­ É importante ainda salientar que a escolha do método a ser palmente, à prática do feedback, independente do modelo de utilizado no processo de software vai depender do tipo de desenvolvimento de software adotado. sistema a ser desenvolvido. Os métodos ágeis são perfeitos para pequenos sistemas ou pequenas adaptações e integrações Dê seu feedback sobre esta edição! Feedback entre diferentes sistemas, no entanto, não se aplicam a siste­ eu s Dê mas complexos e críticos, nos quais são necessárias análises A Engenharia de Software Magazine tem que ser feita ao seu gosto. sobre e detalhadas de requisitos e maior planejamento. Para isso, precisamos saber o que você, leitor, acha da revista! s ta edição Dê seu voto sobre este artigo, através do link: Conclusões www.devmedia.com.br/esmag/feedback Para Pressman (2006), cabe ao analista de sistemas o papel de facilitador no processo de software, quando elenca algu­ mas capacidades básicas que este deve possuir e que podem Referências Bibliográficas se resumir na habilidade de comunicar-se, de entender e se CHIAVENATO, Idalberto. Gerenciando pessoas: o passo decisivo para a administração fazer entender. Griffin (2006), no entanto, enxerga cada ele­ participativa. São Paulo: Makron Books, 1994. mento do processo de comunicação como parte fundamental: GRIFFIN, Ricky W.; MOORHEAD, Gregory. Fundamentos do comportamento organizacional. São se um deles falhar, a mensagem pode não ser transmitida Paulo: Ática, 2006. adequadamente. Por isso, para viabilizar a comunicação organizacional, é KOSCIANSKI, André; SOARES, Michel dos Santos. Qualidade de software. São Paulo: Novatec, 2007. importante que todas as pessoas envolvidas no processo de MATURANA, Humberto. Emoções e linguagem na educação e na política. Belo Horizonte: UFMG, software, desde usuários até analistas e desenvolvedores, 2001. conheçam o processo de comunicação, seu funcionamento e suas técnicas. Habilidades de ouvir, falar e valorizar a pessoa MEGGINSON, Leon C.; MOSLEY, Donald C.; PIETRI Jr., Paul H. Administração: conceito e aplicação. com quem se comunica são importantes e devem ser promo­ São Paulo: Harbra, 1998. vidas. Além disso, deve-se procurar evitar os pré-julgamentos PFLEEGER, Shari Lawrence. Engenharia de Software. São Paulo: Prentice Hall, 2004. decorrentes de mitos e preconceitos. Eles podem interferir PRESSMAN, Roger S. Engenharia de software. São Paulo: McGraw-Hill, 2006. fortemente nos relacionamentos interpessoais, causando os indesejáveis ruídos na comunicação. RETI, Andréa Huggard-Caine. O segredo de cuidar das pessoas: experiências do cotidiano para Outro aspecto do processo de comunicação que deve ser gerenciar melhor e aumentar o desempenho das equipes. Rio de janeiro: Elsevier, 2008. amplamente encorajado é o feedback, por constituir-se numa SOMMERVILLE, Ian. Engenharia de software. São Paulo: Pearson Addison-Wesley, 2007. maneira de checar a compreensão das mensagens. Esse talvez 42 Engenharia de Software Magazine - A Comunicação no Processo de Software
  • 43.
    Planejamento e Gerência Nesta seção você encontra artigos voltados para o planejamento e gerência de seus projetos de software Análise Quantitativa de Riscos e suas Técnicas Marcio Souza Hermano Perrelli De que se trata o artigo? mms3@cin.ufpe.br hermano@cin.ufpe.br Este artigo traz o aprofundamento na Gerência Líder de Equipes de desenvolvimento de software Atualmente é professor Adjunto e Vice-Diretor no Centro de Estudos e Sistemas Avançados do Re- do Centro de Informática da Universidade Fe- de Riscos, detalhando a Análise Quantitativa de cife (C.E.S.A.R). Mestre em Ciência da Computação deral de Pernambuco. Consultor e instrutor da Riscos e suas principais técnicas, de acordo com a pela Universidade Federal de Pernambuco e Gra- Qualiti Software Processes. Certificado PMP recomendação do Guia PMBOK, e mostra o resul- duado em Informática pela Universidade Católica (Project Management Professional) pelo PMI. tado de um estudo comparativo destas técnicas. do Salvador. É membro dos grupos de pesquisa na PhD In Computing Science pela University of área de gerenciamento de projetos e engenharia Glasgow, Mestre em Informática pela Univer- de software, GP2 Project Management Research sidade Federal de Pernambuco e graduado Para que serve? Group e PROMISE (Project Management Improve- em Engenharia Eletrônica pela Universidade Analisar as decisões chaves na presença de incer- ments in Software Engineering). Federal de Pernambuco. tezas; alertar, principalmente, os envolvidos de Cristine Gusmão um projeto sobre riscos importantes antes de suas ocorrências; e, traduzir os riscos em números. A cristine.gusmao@nutes.ufpe.br Graduada em Engenharia Elétrica (1993), mestrado Análise Quantitativa de Riscos (2001) e doutorado (2007) em Ciência da Compu- (AQR) é um campo relativa­ Em que situação o tema é útil? tação pela Universidade Federal de Pernambuco. mente novo, o qual tem cres­ Professora adjunta da Universidade Federal de Per- Auxiliar os envolvidos em um projeto, mais cido rapidamente em diversas áreas do especificamente, o gestor de projetos, no nambuco, com atividades na graduação e pós-gra- duação, lotada no Núcleo de Telessaúde, pesquisa- conhecimento [Vose 2002]. Uma dessas processo de tomada de decisão. dora colaboradora do Grupo GP2 do Centro de Infor- áreas tem sido o gerenciamento de mática (CIn - UFPE), coordenadora e pesquisadora projetos, cujas diversas abordagens dis­ do PROMISE (Project Management Improvements poníveis consideram a análise de riscos in Software Engineering) e colaboradora do Progra- como um dos seus principais processos conduzi-la após a avaliação dos riscos, ma de Mestrado em Engenharia de Computação da Escola Politécnica de Pernambuco - Universidade de no contexto da gerência de riscos de um incluindo a priorização dos mesmos, e Pernambuco (POLI - UPE). É membro da SBC. Tem projeto [Matias Júnior 2006]. garantir que todos os principais riscos experiência na área de Ciência da Computação, A discussão sobre a análise quanti­ poderão ser considerados. com ênfase em Engenharia de Software, atuando tativa de riscos presume que etapas Segundo David Hulett [Hulett 2004], a principalmente nos seguintes temas: Gerência de anteriores, tais como planejamento e análise quantitativa de riscos é sempre Riscos de Projetos, Qualidade de Software, Gerência de Projetos, Gestão de Sistemas de Saúde, e-Health identificação de riscos, tenham sido recomendada para projetos grandes, e Consultoria em Processos de Negócio. cumpridas. Desta forma, é melhor complexos ou visíveis, podendo ser Edição 24 - Engenharia de Software Magazine 43
  • 44.
    adaptada para projetosmenores sempre que necessário. Desta de Monte Carlo é um método antigo, com mais de cinquenta forma, ela é tipicamente executada para examinar a viabilidade (50) anos, que combina as distribuições baseadas nos relacio­ de custos e de prazo de um projeto, ou seja, analisar as decisões namentos dos modelos, armazenando os resultados para serem chaves na presença de incertezas. mostrados posteriormente. As saídas são sempre mostradas Neste cenário, a AQR provê respostas a três questões que não graficamente, porém outras formas incluem listas de elemen­ podem ser respondidas através de metodologias de gerencia­ tos de custos, que contêm o maior risco (maior contribuição mento de projetos determinísticas, tais como estimativa de para a contingência em relação ao custo total), ou atividades custo tradicional ou planejamento de projeto: de tempo (atividades nos caminhos críticos, considerando o • Qual a probabilidade de alcançar o objetivo do projeto, dados maior número de iterações durante a simulação). todos os riscos conhecidos e quantificados? Adicionalmente, a AQR inclui a Análise por Árvore de • De quanto pode ser o atraso e quão necessária é a contingên­ Decisão, a qual melhora a capacidade da organização de to­ cia para o nível de certeza desejado pela organização? mar a decisão correta quando as implicações das diferentes • Onde está o maior risco, considerando o modelo do projeto e decisões não podem ser preditas com certeza. A análise por a totalidade de todos os riscos identificados e quantificados? árvore de decisão envolve: especificação de todos os fatores e as implicações de uma decisão, os custos e benefícios de to­ A análise qualitativa de riscos, uma das principais partes mar determinada decisão e as probabilidades associadas com da avaliação de riscos, responde à última pergunta, mas não cenários incertos ou resultados que tenham um impacto na pode estimar o total de risco do projeto, haja vista que cada decisão e os seus resultados. A análise por árvore de decisão, risco é examinado por vez [Hullet 2004]. Então, a contribuição então, computa o valor monetário esperado (custo ou lucro) da Análise Quantitativa de Riscos é avaliar, simultaneamente, ou a utilidade esperada para a organização das alternativas todos os riscos do projeto em relação ao seu custo total, ou a disponíveis. A parte interessada utiliza os resultados para sua data final, bem como aos seus principais marcos. tomar decisões quando a incerteza está presente. A AQR tem como objetivo global alertar ao gerente, cliente A Análise Quantitativa de Riscos, através de suas técnicas, ou patrocinador do projeto a respeito de dois pontos princi­ avalia numericamente o efeito dos riscos identificados nos pais: (1) se os objetivos gerais do projeto estão suficientemente objetivos gerais do projeto [PMI 2004]. Então, na próxima em perigo para justificar o tratamento dos riscos, e (2) sobre seção serão discutidas as principais técnicas utilizadas no riscos importantes antes das suas ocorrências, o que lhes per­ tratamento dos riscos. mite desenvolver ações de mitigação de risco ou captura de oportunidades para tornar o projeto melhor. Uma dificuldade As Técnicas na concretização deste objetivo ocorre porque, no início do As técnicas quantitativas de análise de riscos traduzem, ma­ projeto, quando se pode tirar vantagem do tratamento dos tematicamente ou computacionalmente, o risco em números. riscos, os dados sobre o risco e, em particular, os modelos Essas técnicas sempre provêem probabilidades numéricas ou necessários para a análise quantitativa dos riscos não estão as consequências e o comportamento dos riscos identificados. disponíveis. Quando as estimativas de custos e prazos estão Os valores utilizados nessas técnicas são obtidos de bases de mais amadurecidas, e os dados mais conhecidos, a flexibili­ dados históricas ou são estimativas de esforço. No último dade e o poder de afetar o projeto com alternativas tornam-se caso, contêm um nível de incerteza devido ao possível uso restritos, pois mais decisões têm de ser tomadas. Em algum de subjetividade relacionado aos valores [Baker et al. 1998; ponto, durante a execução do projeto, o objetivo principal da Padayachee 2001]. análise quantitativa dos riscos é fornecer estimativas precisas Nesse cenário, as técnicas mais comumente empregadas para de onde o projeto resultará. a AQR e destacadas na literatura são: Entrevistas, Análise de Ainda de acordo com David Hulett [Hulett 2004], as principais Sensibilidade, Análise do Valor Monetário Esperado, Análise entradas para a AQR são as distribuições de probabilidade dos da Árvore de Decisão e Simulação de Monte Carlo [Hulett 2004; custos ou das durações da atividade (prazo). As distribuições PMI 2004; Almeida e Ferreira 2008]. da probabilidade são usualmente distribuições contínuas de valores possíveis do elemento custo ou do prazo, desenvolvida Entrevistas através de entrevistas intensivas e análise de desempenhos As entrevistas são realizadas, conforme Newton Nóbrega passados. A entrada típica é resultado do uso da estimativa [Nóbrega 2007], de maneira análoga àquelas que compõem de 3-pontos, no qual o custo ou a duração é representado pelo os métodos de identificação de riscos, tendo como principal valor mais otimista (mais baixo, melhor), o valor mais prová­ diferença a recomendação de se buscar, na fase de identifica­ vel para este projeto, e o valor pessimista (mais alto, pior). As ção, dados qualitativos e quantitativos para os riscos. Já na distribuições mais comumente usadas são a: triangular, beta, quantificação dos riscos, as entrevistas são realizadas com o uniforme, normal ou outros tipos de distribuições. objetivo de se quantificar a probabilidade e as conseqüências O método mais frequentemente usado na Análise Quanti­ dos riscos sobre os resultados do projeto. tativa de Riscos é a simulação de Monte Carlo do modelo de O Project Management Institute [PMI 2004] destaca que a custo ou prazo [Hulett 2004; Matias Júnior 2006]. A simulação informação necessária vai depender do tipo de distribuição 44 Engenharia de Software Magazine - Análise Quantitativa de Riscos e suas Técnicas
  • 45.
    Planejamento de probabilidades queé usado. Se for utilizada a distribuição detalhes, da seguinte maneira: impacto em relação ao cus­ uniforme, devem ser colhidas informações sobre o valor má­ to (Ic), impacto em relação ao empenho (Ie) e impacto em ximo e mínimo para uma consequência de um evento de risco, relação ao cronograma (Icr). tal como citado anteriormente. No caso de uma distribuição Usando esta técnica para todos os riscos, ter-se-á uma análise triangular, seriam necessárias informações sobre o cenário para apresentar aos stakeholders do projeto e, consequentemen­ otimista, pessimista e aquele mais provável. As distribuições te, poderá ser requerida uma reserva de contingência para representam as probabilidades e as consequências do compo­ cobrir o impacto dos riscos, caso algum destes aconteça. John nente do projeto. Grass [Grass 2007] exemplifica essa situação (vide Tabela 1), Por fim, a documentação do raciocínio (da análise lógica) por conforme explanado posteriormente. detrás das extensões dos riscos é um componente importante da entrevista sobre riscos, uma vez que pode gerar estratégias Probabilidade de Impacto em termos de Reserva de Contingência Risco eficazes de respostas aos riscos. Ocorrência (Pr) custo (Ic) para o Risco A 80% R$ 10.000,00 R$ 8.000,00 Análise de Sensibilidade B 30% R$ 30.000,00 R$ 9.000,00 A Análise de Sensibilidade é uma técnica utilizada para C 50% R$ 8.000,00 R$ 4.000,00 tomada de decisão que avalia a mudança de uma variável D 10% R$ 40.000,00 R$ 4.000,00 dentro do projeto, analisando o resultado dessa variação sobre E 30% R$ 20.000,00 R$ 6.000,00 o seu planejamento inicial, e é de grande importância para a F 25% R$ 10.000,00 R$ 2.500,00 análise de novos cenários [Silva e Belderrain 2004; Almeida e Ferreira 2008]. Total R$ 118.000,00 R$ 33.500,00 Esta técnica ajuda a determinar quais riscos apresentam Tabela 1. Representação da técnica VME [Grass 2007] maior impacto potencial no projeto, examinando a extensão com que a incerteza de cada elemento do projeto afeta o Supondo a identificação de seis riscos no projeto, o impacto objetivo que está sendo examinado quando todos os outros potencial é de cento e dezoito mil reais (R$ 118.000,00). Entre­ elementos incertos são mantidos em seus valores de linha tanto, não se pode solicitar toda essa quantia como reserva de base, impactando em prazos e custos [PMI 2004; Almeida de contingência, pois este nível de reserva seria considerado e Ferreira 2008]. Desta forma, a aplicabilidade da análise de para o caso de todos os riscos ocorrerem. Por isso, a reserva de sensibilidade é caracterizada tanto na gestão de prazos quanto contingência é respeitada avaliando o potencial do impacto dos no retorno sobre o investimento. riscos no projeto e a probabilidade dos mesmos acontecerem, De uma maneira geral, utiliza-se a análise de sensibilidade sendo evidenciada na última coluna da Tabela 1. para tomar melhores decisões, decidir quais dados estimados Percebe-se que a solicitação total da reserva de contingência é devem ser refinados antes de iniciar o processo de tomada de trinta e três mil e quinhentos reais (R$ 33.500,00), podendo de decisão e concentrar-se nos elementos críticos durante a ser adicionada ao orçamento do projeto como uma poupança sua implantação. Por outro lado, o principal obstáculo é a não referente aos riscos. Se o risco “C” e o “F” ocorrerem, parte indicação da possível ocorrência de variação dos parâmetros dessa reserva poderá ser usada para cobrir o impacto. Porém, a escolhidos na modificação da variável em análise, bem como ocorrência do risco “D” impactará na reserva de contingência, considerar cada variável como sendo independente. podendo não ser o suficiente para proteger o projeto e cobrir o impacto. Mesmo o risco “D” tendo apenas 10% de chance de Análise do Valor Monetário Esperado incidência, a equipe do projeto tem a obrigação de focar nesse O Valor Monetário Esperado (VME) é uma prática de gerên­ risco para assegurar que o mesmo seja gerenciado com sucesso, cia de riscos utilizada para ajudar a quantificar e comparar ou seja, a equipe deve procurar minimizar o impacto através os riscos em vários aspectos de um projeto. Tal como outras de um gerenciamento pró-ativo do risco. técnicas de análise quantitativa de riscos, o VME se baseia No caso do gerenciamento de projetos médios e grandes, faz em números específicos e quantificáveis para a realização de sentido incluir algum tempo e orçamento para riscos desco­ cálculos ao invés de aproximações e subjetivações, tais como: nhecidos. De acordo com John Grass [Grass 2007], existe uma alto, médio e baixo. comprovação na indústria de que uma reserva de contingência Nessa linha, o VME é fundamentado em três números de 5% pode ser adicionada ao projeto para tratar dos riscos que básicos. São eles: probabilidade do risco ocorrer (Pr), pro­ são desconhecidos no início do projeto. babilidade do risco impactar o projeto se o mesmo ocorrer (PI) e impacto no projeto se o risco ocorrer (I). Em relação Análise da Árvore de Decisão à variável PI, normalmente a maioria dos projetos não A Árvore de Decisão consiste na determinação e visualização utilizam este componente de cálculo, pois se supõe que os gráfica de caminhos que poderão ser seguidos em um pro­ riscos identificados terão a probabilidade de 100%, ou um cesso de tomada de decisão [Pedro e Guerreiro 2004; Almeida valor bem perto de impactar o projeto. Quanto ao elemento e Ferreira 2008]. Essa técnica é estudada em vários campos impacto (I), o mesmo pode ser reclassificado, em maiores de pesquisa como ciências sociais, estatística, engenharia e Edição 24 - Engenharia de Software Magazine 45
  • 46.
    inteligência artificial, eaplicada desde o diagnóstico de casos combinação escolha/probabilidade, representando os níveis médicos até avaliação de riscos na área financeira. ao extremo de cada nó. Segundo Raphael D’Castro [D’Castro 2009], como técnica de computação inteligente e apresentando resultados extra­ Na construção de uma árvore de decisão, considerando os ordinários na tarefa de classificação, a análise da árvore de principais elementos defendidos por David Hillson, é plausível decisão é um candidato natural para auxiliar nos obstáculos fazer uma avaliação para determinar a escolha mais adequada, encontrados na gerência de riscos. ponderando custos, probabilidades e consequências associa­ Na sua forma estrutural, Cliff Ragsdale diz que a árvore de dos, baseando-se na seguinte lógica: caminha-se pela árvore de decisão compõe-se de nós (concebidos por círculos e quadrados decisão, analisando cada percurso lógico alternativo; calcula- representando, respectivamente, eventos aleatórios e decisões) se seu valor acumulando custos e benefícios do início ao fim; interconectados por ramos (representados por linhas), sendo utiliza-se este conjunto de valores e verifica-se o retorno de que os ramos originados do nó de decisão mostram as diferen­ cada caminho lógico alternativo, obtendo o valor esperado de tes alternativas para uma decisão particular [Ragsdale 2001], cada escolha (sempre ponderando as consequências quando as conforme ilustrado na Figura 1. probabilidades ocorrerem); por fim, o nó possuidor do valor esperado mais alto, será a opção de decisão recomendada. A existência de alguns obstáculos na utilização das árvores de decisão merece ser citada. São eles: limitação prática da técnica (análise de um baixo número de opções de decisão e riscos possíveis); amplo modelo sem grande utilidade (tentativa de demonstrar em uma única árvore, um projeto que envolve muitas decisões em distintos níveis, associados a uma infini­ dade de riscos); e, necessidade de imparcialidade da pessoa responsável por tomar a decisão fundamentada no valor espe­ rado mais alto [Gama 2002; Hillson 2005; D’Castro 2009]. Apesar das limitações citadas anteriormente, as principais vantagens da técnica de árvore de decisão são a simplicidade, facilidade de interpretação, flexibilidade e ser um método Figura 1. Exemplificação de uma árvore de decisão [Ragsdale 2001] não-paramétrico (não assume nenhuma distribuição parti­ cular para os dados e pode construir modelos para qualquer De uma maneira geral, os ramos da árvore correspondem a função, desde que o número de exemplos de treino seja sufi­ cada possibilidade lógica que leva à próxima possibilidade ou ciente) [Gama 2002; Clarke e Bittencourt 2003; Hillson 2005; ação a ser tomada. Nem sempre a combinação das condições Almeida e Ferreira 2008]. descritas leva a uma ação definitiva. Quando isto ocorre, o decisor tem o papel de optar pela melhor ação a ser tomada. Simulação de Monte Carlo As folhas, situadas no final dos ramos, exibem os caminhos O método de Monte Carlo é uma das técnicas do processo aos quais uma decisão pode levar. Essas folhas terminais são de Análise Quantitativa de Riscos, sendo recomendado para a representadas, normalmente, por traços verticais, indicando análise de riscos de cronograma e de custos [Galvão 2005]. Seu ponto final, ou por triângulos. algoritmo é um processo de simulação que é repetido várias Neste panorama, David Hillson afirma que a análise da árvore vezes, sendo gerados, em cada iteração, possíveis valores para de decisão baseia-se em quatro elementos fundamentais: esco­ as durações das atividades [Lima et al. 2008]. Desta forma, a lha, probabilidade, custos e consequências [Hillson 2005]: rede do projeto é montada baseada nesses valores, obtendo • Escolha: primeiro passo na construção da árvore de deci­ uma aceitável data final do projeto. são. Identifica as opções a serem escolhidas para alcançar os Adiciona-se a isto que, na análise de cronograma é utilizado objetivos, sendo que essas escolhas definem os nós de decisão o Método de Diagrama de Precedência (PDM) e, na análise de da árvore. custos, emprega-se a Estrutura Analítica de Trabalho (EAP) • Probabilidade: na existência de incerteza, deve-se identificar [Nóbrega 2007]. A EAP é uma maneira de decompor o projeto e avaliar a probabilidade estimada de cada resultado, por ser em componentes facilmente gerenciáveis. Desta forma, o proje­ uma importante variável associada com os diversos caminhos to acaba transformado em grupos principais de trabalho, onde de decisões diferentes. esses são reduzidos a tarefas, subtarefas, e assim sucessivamen­ • Custos: fator mais simples associado às escolhas alternativas. Ao te, até que se chegue num nível de granularidade necessária e se fazer uma escolha, sempre existe um custo relacionado e uma entendível para finalizar um projeto específico. estimativa deve ser incluída em cada nó da árvore de decisão. O nome Monte Carlo surgiu no decorrer do projeto Manhat­ • Consequências: resultado da implementação de uma decisão, tan, na Segunda Guerra Mundial, devido ao fato da cidade considerando seus custos e riscos. Desta forma, a estrutura da de Monte Carlo, capital de Mônaco, local de famosos cassi­ árvore de decisão apresenta o resultado presumido de cada nos, ser uma importante referência em jogos de azar e cujo 46 Engenharia de Software Magazine - Análise Quantitativa de Riscos e suas Técnicas
  • 47.
    Planejamento funcionamento possuir certasimilaridade com o processo Conclusão de simulação estatística [Gujarati 2002; Galvão 2005; Matias A Entrevista, mesmo no contexto da análise quantita­ Júnior 2006]. tiva, é uma técnica bastante subjetiva, pois se baseia, na O método de Monte Carlo é um procedimento indutivo que maioria das vezes, nas experiências vivenciadas pelos permite tomada de decisões de forma mais consistente, ou seja, entrevistados. Em alguns poucos casos, os entrevista­ as respostas obtidas da sua aplicação não são binárias, mas sim dos fundamentam suas opiniões em dados históricos estabelecidas em termos probabilísticos [Smith 1973]. Então, essa de projetos, quando guardados. Como ponto relevante técnica admite determinar uma gama de cenários possíveis para desse processo, é a possibilidade de determinar, quan­ a conclusão do projeto, expondo, desta forma, a probabilidade titativamente, a probabilidade e as consequências dos de ocorrência de cada cenário. riscos sobre os resultados do projeto através de diferentes Para a determinação destes cenários e considerando a inci­ pontos de vistas. dência de riscos, utilizam-se distribuições de probabilidades A técnica de Análise de Sensibilidade, mesmo aplicada ao invés do uso de estimativas únicas, sendo as distribuições a em uma variedade de contextos [Aggarwal et al. 2005; base para o processo de simulação. Do e Rothermel 2008; Harman et al. 2009], ainda precisa Uma distribuição de probabilidades é representada matemati­ de uma pesquisa mais minuciosa na gestão de prazos camente por uma função f, chamada função densidade de pro­ [Almeida e Ferreira 2008]. De qualquer sorte, a análise babilidade, cujo gráfico mostra as possibilidades de ocorrência de sensibilidade avalia, independentemente, a mudança dos resultados possíveis de um evento. de uma variável, comparando-a com o seu planejamento Existem diversos tipos de distribuições de probabilidades que inicial, haja vista que as variáveis são isoladas. Desta são oferecidas por software especializado para análise de riscos forma, permite decidir quais dados precisam de refina­ e que podem ser utilizadas para representar as incertezas nos mento antes de iniciar o processo de tomada de decisão, valores das durações das atividades ou outros parâmetros do concentrando-se nos elementos críticos durante a sua projeto. São elas as distribuições Beta, Binomial, Exponencial, implantação. Gamma, Lognormal, Normal, PERT, Poisson, Student, Trian­ Já a análise do Valor Monetário Esperado consegue gular e Uniforme. estabelecer uma reserva de contingência para cobrir o Vale destacar que, por não existir, normalmente, uma base real impacto dos riscos que possam ocorrer, pois considera para a escolha das distribuições, elas são selecionadas arbitra­ todos os possíveis resultados, evitando assim, a simples riamente [Conrow 1998]. Porém, motivos históricos e entrevistas combinação de todos os melhores e piores casos. A limi­ com especialistas podem ser artifícios para determinar a distri­ tação da técnica é que a mesma proporciona melhores buição de probabilidade específica para o projeto. resultados quando utilizada ao longo de muitos projetos de porte semelhante, com um número de riscos conside­ Análise Comparativa das Técnicas rável [Loosemore et al. 2006]. Ou seja, quanto mais riscos Na Tabela 2 são tratadas as vantagens e desvantagens das forem identificados, maior será a distribuição da reserva principais técnicas de análise quantitativa de riscos mostradas de contingência entre os riscos envolvidos. na seção anterior de forma sintética. Entre as técnicas de análise quantitativa de riscos, a Todas as técnicas estudadas pregam o auxílio em processos análise da Árvore de Decisão apresenta diversas vanta­ de tomada de decisão, oferecendo resultados numéricos mais gens, conforme mostrado na Tabela 2. A simplicidade, reais sobre os resultados do projeto. Acrescente-se a isso o fato facilidade de interpretação e a visualização gráfica das de elas serem aplicadas, principalmente, na gestão de prazos alternativas a serem seguidas, capacitam os envolvi­ (cronograma) ou na de custos, ou em ambas. dos no processo de tomada de decisão, a entender o Técnica Vantagem Desvantagem Entrevistas Têm diversas visões de profissionais com experiências distintas. Dependência da informação obtida com o entrevistado. Análise de Sensibilidade Avalia, independentemente, a mudança de uma variável, comparando-a com o seu planejamento inicial. Não indicação da variação de parâmetros que se relacionam com uma determinada variável analisada e ausência de estudo mais detalhado da aplicação da técnica junto à gestão de prazos. Análise do VME Consegue estabelecer uma reserva de contingência para cobrir o impacto dos riscos, caso ocorram. Apresenta melhores resultados quando utilizada com muitos projetos de porte semelhante e com um número de riscos suficientes [Loosermore et al. 2006]. Análise da Árvore de Decisão Visualização gráfica dos caminhos a serem seguidos, simplicidade, facilidade de interpretação, flexibilidade, Dificuldade na apresentação dos resultados quando se tem um método não-paramétrico, utilização numa gama de áreas de pesquisa e combinação com outras técnicas cenário de possibilidades muito pequeno ou muito amplo. de tomada de decisão. Simulação de Monte Carlo Processo de simulação repetido inúmeras vezes durante uma iteração, obtenção de respostas não binárias e Aleatoriedade na escolha das distribuições de probabilidade e possibilidade de estudar as consequências da tomada de decisão sem executar o projeto [Nóbrega 2007]. demanda de tempo para sua aplicação. Tabela 2. Vantagens e Desvantagens das principais técnicas da AQR Edição 24 - Engenharia de Software Magazine 47
  • 48.
    procedimento após umabreve explanação. Também, não executada mais de uma vez. Ademais, não existe uma lógica assume nenhuma distribuição especial e é capaz de esta­ ou regra para a determinação das distribuições utilizadas, belecer modelos para qualquer finalidade, desde que tenha consistindo estas em escolhas aleatórias do responsável pela informação necessária de treino. Como obstáculo, oferece execução e análise do método. dificuldades na apresentação dos resultados quando as possibilidades são extremas, em termos de quantidade. Dê seu feedback sobre esta edição! Feedback eu Por último, a Simulação de Monte Carlo, prática comum s Dê A Engenharia de Software Magazine tem que ser feita ao seu gosto. e difundida no Project Management Body of Knowledge [PMI sobre e Para isso, precisamos saber o que você, leitor, acha da revista! 2004], quando se usa simulação. Esta técnica gera cenários s ta Dê seu voto sobre este artigo, através do link: edição presumíveis, sem que exista a necessidade de executar o www.devmedia.com.br/esmag/feedback projeto. Como barreira, demanda tempo, pois precisa ser Referências [Aggarwal et al. 2005] Aggarwal, K. K., Singh, Y., Chandra, P. e Puri, M. (2005) “Sensitivity analysis of [Hullet 2004] Hulett, David (2004) “Quantitative Risk Analysis Fundamentals” Defense Acquisition , fuzzy and neural network models” SIGSOFT Softw. Eng. Notes, ACM, 30, 1-4. , University, Disponível em: https://acc.dau.mil/CommunityBrowser.aspx?id=19270, Acesso em: 25 abr. 2009. [Almeida e Ferreira 2008] Almeida, E. P. e Ferreira, M. L. R. (2008) “Técnicas de Análise de Risco Aplicadas à Planejamento e Programação de Projetos da Construção Civil” IV Congresso Nacional , [Lima et al. 2008] Lima, E. C. P., Viana, J. C., Levino, N. A. e Mota, C. M. M. (2008) “Simulação de de Excelência em Gestão: Responsabilidade Socioambiental das Organizações Brasileiras, Niterói, Monte Carlo Auxiliando a Análise de Viabilidade Econômica de Projetos” IV Congresso Nacional de , RJ, Brasil, 31 de julho, 01 e 02 de Agosto. Excelência em Gestão: Responsabilidade Socioambiental das Organizações Brasileiras, Niterói, RJ, Brasil, 31 de julho, 01 e 02 de Agosto. [Baker et al. 1998] Baker, S., Ponniah, D. e Smith, S. (1998) “Techniques for analysis of risks in major projects” Journal of the Operations Research Society, 49, pp567-572. , [Loosermore et al. 2006] Loosemore, Martin, Raftery, John, Reilly, Charlie e Higgon, Dave (2006) “Risk Management in Projects” 2nd Edition, Taylor & Francis, New York, USA. , [Clarke e Bittencourt 2003] Clarke, Robin T. e Bittencourt, Hélio R. (2003) “Uso de Árvores de Decisão na Classificação de Imagens Digitais”XI SBSR, Belo Horizonte, Brasil, 05-10 de Abril, INPE, p. 2043 - 2045. , [Matias Júnior 2006] Matias Júnior, R. (2006) “Análise Quantitativa de Risco Baseada no Método de Monte Carlo: Abordagem PMBOK” Congresso Brasileiro de Gerenciamento de Projetos, 29 a 31 , [Conrow 1998] Conrow, Edmund H.(1998)“Some Limitations of Quantitative Risk Analysis Approaches de Março, Florianópolis. Used in Project Management”Invited paper by the Office of the Secretary of Defense, April. , [Nóbrega 2007] Nóbrega, Newton C. M. (2007) “Um Estudo Teórico da Avaliação de Riscos em [D’Castro 2009] D’Castro, Raphael J. (2009) “Avaliação de Riscos em Projetos de Software a partir do Projetos de Investimento em Organizações” Monografia para a graduação em Engenharia de , Uso de Técnicas de Inteligência Computacional”Trabalho de Conclusão de Curso, Departamento de , Produção, Universidade Federal de Juiz de Fora, Novembro. Sistemas e Computação, Engenharia da Computação, Universidade de Pernambuco, Junho. [Padayachee 2001] Padayachee, Keshnee (2001) “Techniques Used in Risk Analysis of Software [Do e Rothermel 2008] Do, H. e Rothermel, G. (2008) “Using sensitivity analysis to create simplified Development” University of South Africa. , economic models for regression testing” ISSTA ‘08: Proceedings of the 2008 international , symposium on Software testing and analysis, ACM, 2008, 51-62. [Pedro e Guerreiro 2004] Pedro, Lucilene M. e Guerreiro, Reinaldo (2004)“Aplicação de Árvores de Decisão na Análise Financeira”In: 4º Congresso USP de Controladoria e Contabilidade, São Paulo, v.1, p.0-0. , [Galvão 2005] Galvão, Márcio (2005) “Análise Quantitativa de Riscos com Simulação de Monte Carlo” Revista Mundo PM, Project Management, Número 05, Out./Nov., Ano 1. , [PMI 2004] PMI, Project Management Institute. (2004) “A Guide to the Project Management Body of Knowledge” ANSI/PMI 99-01-2004, Four Campus Boulevard, Newtown Square, USA. , [Gama 2002] Gama, João (2002) “Árvores de Decisão” Laboratory of Artificial Intelligence and , Decision Support, University of Porto, Portugal, Disponível em: http://www.liaad.up.pt/~jgama/ [Ragsdale 2001] Ragsdale, Cliff T. (2001) “Spreadsheet modeling and decision analysis: a practical Aulas_ECD/arv.pdf, Acesso em: 9 ago. 2009. introduction to management science” 3rd, Cincinnati, Ohio, South-Western College Pub. , [Grass 2007] Grass, John (2007)“Valor Monetário Esperado (VME)”The ICPM – Project Management , [Silva e Belderrain 2004] Silva, Roterdan M. e Belderrain, Mischel C. N. (2004) “Considerações sobre Community, Disponível em: http://www.theicpm.com/index.php?option=com_content&view=art Análise de Sensibilidade em Análise de Decisão” Instituto Tecnológico de Aeronáutica, Divisão de , icle&id=2772:valor-monetario-esperado-vme&catid=82, Acesso em: 08 ago. 2009. Engenharia Mecânica-Aeronáutica, Relatório de Iniciação Científica, 44p, CNPq. [Gujarati 2002] Gujarati, D. N. (2002) “Econometria básica” 3ª edição, Makron Books, São Paulo. , [Smith 1973] Smith, Kerry (1973) “Monte Carlo Methods,Their Role for Econometrics”Lexinton Books. , [Harman et al. 2009] Harman, M., Krinke, J., Ren, J. e Yoo, S. (2009) “Search based data sensitivity [Vose 2002] Vose, David (2002) “Risk Analysis: a quantitative guide” 2nd Edition, UK, John Wiley , analysis applied to requirement engineering” GECCO ‘09: Proceedings of the 11th Annual , & Sons, 418 p. conference on Genetic and evolutionary computation, ACM, 1681-1688. [Hillson 2005] Hillson, David (2005)“Using Decision Trees”Risk Doctor Briefing,The Risk Doctor, Disponível , em: http://www.risk-doctor.com/pdf-briefings/risk-doctor18e.pdf, Acesso em: 10 abr. 2009. 48 Engenharia de Software Magazine - Análise Quantitativa de Riscos e suas Técnicas
  • 49.
    Desenvolvimento Nesta seçãovocê encontra artigos voltados para diferentes abordagens de apoio ao desenvolvimento de projetos de software Automatizando Testes Funcionais em Aplicações Web Utilizando a Ferramenta Selenium para execução de Testes Funcionais De que se trata o artigo? Neste artigo iremos apresentar a implementação de uma estratégia de teste funcional utilizando uma ferramenta, Selenium IDE, para automação da execução e re-execução dos testes. Para que serve? O artigo demonstra na prática a ferramenta Sele- nium IDE para automação de teste funcional usan- do uma estratégia de teste do tipo capture-replay, contextualizada ao domínio de aplicações web. Em que situação o tema é útil? O tema é útil para os desenvolvedores e en- genheiros de software que planejam aplicar a automação de testes no desenvolvimento de aplicações web. N os artigos anteriores escri­ funcional, onde o sistema é tratado em tos para a ES Magazine, nos uma visão macroscópica e sua avaliação Arilo Cláudio Dias Neto preocupamos em discutir os é feita sem considerar detalhes internos ariloclaudio@gmail.com conceitos básicos sobre Teste de Sof­ de implementação. É Doutor em Engenharia de Sistemas e Com- tware e apresentar uma estratégia que No entanto, apesar de ser totalmente putação formado na COPPE/UFRJ e possui possibilita a geração de casos de teste viável, a aplicação desta estratégia de o certificado de Implementador do modelo de software a partir de casos de uso já teste quando realizada manualmente MPS. Possui 7 anos de experiência em análise, desenvolvimento e teste de software. É editor especificados. Tal estratégia seria apli­ representa um grande esforço para um técnico da Revista SQL Magazine, gerenciada cada no nível de teste de software, re­ projeto de software. Com isso, pensar em pelo Grupo DevMedia. presentando um tipo de técnica de teste mecanismos para automação dos testes Edição 24 - Engenharia de Software Magazine 49
  • 50.
    consiste em pensarem mecanismo para reduzir o esforço desta Teste funcional representa uma categoria de técnicas de atividade no contexto geral de um projeto de software. teste em que o componente de software a ser testado é abor­ É importante termos em mente que automação por si só dado como se fosse uma caixa-preta, ou seja, não se consi­ não resulta em redução de esforço nos testes ou aumento da dera o comportamento interno do mesmo (Figura 1). Dados qualidade desta atividade. A automação simplesmente torna de entrada são fornecidos, o teste é executado e o resultado automática algumas tarefas do processo de testes, mas ela não obtido é comparado a um resultado esperado previamente faz milagres. Como assim? Uma ferramenta de testes apenas conhecido. Haverá sucesso no teste se o resultado obtido for automatiza o nosso conhecimento técnico sobre teste de sof­ igual ao resultado esperado. O componente de software a tware. Sendo assim, se não tivermos conhecimento técnico ser testado pode ser um método, uma função interna, um adequado sobre teste de software, o conjunto de casos de programa, um componente, um conjunto de programas e/ teste gerado para avaliar nosso sistema não terá cobertura ou ou componentes ou mesmo uma funcionalidade. A técnica qualidade suficiente, de forma que a ferramenta irá apenas de teste funcional é aplicável a todos os níveis de teste, seja automatizar a execução do conjunto de testes inadequados, teste de sistema, aceitação, integração ou unidade. ou seja, não termos qualquer ganho com isso. Se tivermos um processo de teste bem definido e um bom co­ nhecimento sobre estratégias de teste, a automação pode trazer grandes benefícios a um projeto de software. Nesse contexto, neste artigo iremos apresentar a implementação de uma estra­ Figura 1. Técnica de Teste Funcional (caixa-preta) tégia de teste funcional apresentada no artigo “Planejamento de Testes a partir de Casos de Uso” publicado na edição 6 da Um dos mecanismos para facilitar a realização de testes ES Magazine utilizando uma ferramenta, Selenium IDE, para funcionais é pensar na automação de algumas tarefas que automação da execução e re-execução dos testes. compõem o processo de testes. Esse é o assunto da próxima seção. Estratégias de Teste de Software Durante o desenvolvimento de um software, diversas Automação dos Testes estratégias para teste podem ser aplicadas. De acordo com Automação dos testes consiste no uso de algum apoio com­ PRESSMAN (2005), essas estratégias podem ser categorizadas putacional, ferramentas, para controlar a execução dos testes, da seguinte forma: a comparação dos resultados e comportamentos obtidos com • Baseadas em implementação: utiliza o código como elemento a execução dos testes em relação aos resultados e compor­ para a geração dos testes. É uma atividade cara, sob o ponto de tamentos esperados, a configuração das pré-condições dos vista de recursos necessários para a sua realização, e bastante testes e outras atividades do controle dos testes e relato de seus complexa quando o tamanho do código se torna bastante gran­ resultados (KALOWA e HUIZINGA, 2007). Comumente, a au­ de. É totalmente dependente de apoio ferramental; tomação dos testes envolve automatizar um processo manual • Baseadas em especificação: utiliza um documento de espe­ já estabelecido em uma organização que utiliza um processo cificação como base para geração dos testes. Assim, tenta-se de testes formalizado. cobrir as imposições e restrições descritas nos requisitos esta­ Apesar de os testes manuais poderem encontrar muitos de­ belecidos para o sistema. A automação da geração dos testes feitos em um software, essa tarefa é complexa, desgastante e nesse caso é mais complicada, caso não se tenha um formalis­ consome muito tempo. Além disso, ela pode não ser tão efetiva mo para a elaboração da especificação do sistema; em revelar alguns tipos de falhas em um software. • Baseadas em modelos: é uma subcategoria de estratégias A automação dos testes é um processo de escrever um pro­ baseada em especificação. Utiliza modelos desenvolvidos ao grama computacional para realizar testes que, caso contrário, longo do processo de desenvolvimento que representam o com­ seriam feitos manualmente. Uma vez que os testes foram portamento ou estrutura do software como base para a geração automatizados, eles podem ser executados rapidamente, dos testes. Facilita a geração automática dos testes, porem é logicamente que proporcionalmente à quantidade de casos completamente dependente da facilidade para a construção do de teste a serem executados. Este representa, na maioria dos modelo adotado e de sua qualidade (corretude). casos, o método de teste com custo mais efetivo para produtos que possuem uma longa vida, com muitas manutenções, pois Cada estratégia apresentada possui sua aplicabilidade, van­ pequenas modificações em certas partes do software ao longo tagens e desvantagens. Não é propósito deste artigo discutir de sua vida podem fazer com que outras partes do software que qual seria a estratégia mais adequada. Ao longo deste artigo estariam funcionando anteriormente deixem de funcionar. iremos adotar uma estratégia de geração de testes baseada em Existem duas abordagens gerais para automação dos testes: especificação, representada pelos casos de uso de um sistema. • Testes dirigidos a código: as interfaces para classes, módu­ Assim, partiremos desta informação para a geração de casos los ou bibliotecas são testadas com uma larga variedade de e procedimentos (roteiros) de teste, seguindo uma estratégia argumentos de entrada para validar se os resultados que estão de teste funcional. sendo retornados estão corretos; 50 Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
  • 51.
    Validação, Verificação &Teste • Teste de Interface (em inglês, Graphical User Interface, ou simplesmente GUI): um framework de teste gera eventos de Nota do DevMan interface do usuário tais como digitação de teclas ou cliques do mouse, e observa as mudanças que ocorrem na interface do Teste Baseado em Modelos usuário. Assim, podemos validar se o comportamento obser­ Teste Baseado em Modelos (TBM) consiste em uma estratégia de teste na qual vado do software após tais eventos estão corretos. casos de teste são derivados totalmente ou parcialmente de um modelo que des- creve algum aspecto (ex: funcionalidade, segurança, desempenho, etc.) de um sof- Uma forma de gerar casos de teste automaticamente é utili­ tware (UTTING e LEGEARD, 2007). Para sua utilização, é necessário que o compor- zando a estratégia de Teste Baseado em Modelos (ver Nota tamento ou estrutura do software (ou parte deles) tenha sido formalizado através DevMan), que adota modelos representando o sistema para de modelos com regras bem definidas (ex: métodos formais, máquinas de estado geração de casos de teste, porém existem outras estratégias finito, diagramas UML, dentre outros). interessantes. A estratégia de TBM normalmente inclui diferentes níveis de abstração, um mo- O quê automatizar, quando automatizar ou até mesmo se é delo comportamental/estrutural do software, o relacionamento entre modelos e necessário de fato automatizar são decisões cruciais que a equi­ código, uma tecnologia para geração dos casos de teste, a importância dos critérios pe de teste deve tomar. Selecionar as funcionalidades corretas de seleção dos testes (algoritmos para geração dos casos de teste) e uma discussão do software para automação é um fator essencial para deter­ do que pode ou não ser automatizado durante os testes (PRETSCHNER, 2005). minar o sucesso da automação. Automatizar funcionalidades instáveis ou funcionalidades que estão sofrendo alterações constantes deve ser evitado (MARICK, 2010). • Realizar teste em momentos específicos e sempre que Neste artigo, iremos focar apenas em teste de interface, como necessário, por exemplo, podemos optar por sempre exe­ veremos com mais detalhe na continuidade deste artigo. cutar os testes a cada modificação no sistema com um esforço baixo, pois os testes já estariam prontos para serem Importância da Automação dos Testes executados; Uma das principais características das atividades de teste • Simplificação nos testes de regressão, pois os testes podem de software, assim como a atividade de desenvolvimento de ser repetidos sempre que a equipe de teste julgar necessário software em geral, é o fato de ser realizada por pessoas, e com pouco esforço; consequentemente passível de erros. A famosa frase “errar é • Possibilidade de testar o sistema com diferentes conjuntos humano” é o fato que nos leva a desejar testes automatizados. de dados, pois o processo de geração e/ou execução é reali­ Diversos problemas relacionados aos testes a serem aplicados zado por um computador, de forma que é mais simples gerar em um software podem ser evitados a partir da automação e utilizar nos testes diferentes combinações de dados. desta atividade, dentre os quais: • Dados de entrada de teste incorretos, informando valores Na seção seguinte iremos focar no tipo de automação de ou tipos de dados inválidos; teste que iremos seguir neste artigo: teste de interface. • Não perceber um comportamento incorreto do software a um certo evento; Teste de Interface (Graphical User Interface [GUI] Testing) • Reportar os resultados dos testes incorretamente; Muitas ferramentas de automação provêm funcionalidades • Esquecer de executar alguns casos de teste; de gravar a execução de um software e rodar esta gravação que • Esquecer de executar alguma pré-condição para execução permitem aos usuários interativamente “filmar” as ações do usu­ dos testes; ário e repeti-la quantas vezes quiser, comparando os resultados • Alteração na execução da sequência de casos de teste, o que e comportamentos obtidos com aqueles esperados. A vantagem poderia levar a execução dos testes a um fracasso. desta abordagem, chamada capture-replay, é que ela requer pouco ou nenhum desenvolvimento de software. Nesta abordagem, uma Além de evitar os problemas causados por eventuais ferramenta de teste grava as entradas de teste como se estivesse falhas humanas, a automação dos testes pode ainda nos sendo submetido ao software que está sendo testado. Os casos de proporcionar: entrada armazenados podem então ser usados para reproduzir • Uma forma de armazenar conhecimento sobre o domínio do os testes posteriormente. Esta abordagem pode ser aplicada a projeto ou sobre as funcionalidades que compõem o sistema, qualquer aplicação que possua uma interface de usuário gráfica. minimizando a dependência pelas pessoas que compõem o No entanto, a dependência dessas funcionalidades representa projeto; mais problemas de confiabilidade e manutenibilidade. Alterar • Garantir a acurácia dos relatórios de teste, pois são ge­ o nome de um botão ou movê-lo para outra parte da tela pode rados de forma automática e sempre seguindo um mesmo requerer que os testes tenham que ser regravados. A abordagem padrão; capture-replay também muitas vezes acrescenta atividades irrele­ • Velocidade na execução dos testes, pois uma vez projetado, vantes ou registra incorretamente algumas atividades. Isso são sua execução é automática e pode não depender de interven­ limitações reais desta abordagem, mas ainda assim ela possui ção humana; bastante aplicabilidade em projetos de software. Edição 24 - Engenharia de Software Magazine 51
  • 52.
    Nome Empresa URL HP QuickTest Professional HP https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&cp=1-11-127-24^1352_4000_100__ IBM Rational Functional Tester IBM Rational http://www-01.ibm.com/software/awdtools/tester/functional/index.html Rational robot IBM Rational http://www-142.ibm.com/software/products/br/pt/robot/ Selenium Ferramenta opensource http://seleniumhq.org/ SilkTest Borland http://www.borland.com/br/products/silk/silktest/index.html TestComplete AutomatedQA http://www.automatedqa.com/products/testcomplete/ TestPartner Micro Focus http://www.microfocus.com/products/TestPartner/index.asp Watir Ferramenta opensource http://watir.com/ Site com diversas outras ferramentas Ferramenta opensource http://www.opensourcetesting.org/ Tabela 1. Ferramentas de Automação de Testes de Software mais populares Uma variação deste tipo de ferramenta seriam as ferra­ 5. Possibilita configurar depuração e pontos de paradas para mentas para teste de aplicações web. Neste caso, a inter­ verificação durante os testes; face são as páginas web. Este tipo de ferramenta também 6. Permite salvar os testes como HTML, scripts em Ruby ou requer pouco ou nenhum desenvolvimento de software. outro formato. No entanto, o framework para testes pode utilizar diferen­ tes técnicas pois ele está lendo HTML em vez de eventos A partir da próxima seção passaremos a usar Selenium em de janela de aplicações. um estudo de caso real. Por fim, outra variação de automação de testes sem scripts que não usa a ideia de capture-replay, em vez Estudo de Caso: Americanas.com disso constrói um modelo da aplicação a ser testada e Neste artigo, realizaremos um teste para uma das opções então permite ao testador criar casos de teste simples­ disponíveis no site amerianas.com, o cadastro de um novo cliente mente editando os parâmetros e condições de teste. Esta realizado no endereço https://carrinho.americanas.com.br/portal/ abordagem pode ser aplicada a qualquer software baseado meuCadastro.portal. em interfaces. O cadastro de um novo cliente deve seguir alguns passos: As ferramentas de automação de teste mais conhecidas 1. Indicação de que ainda não é um cliente (Figura 2). Neste podem ser caras, apesar de já existirem diversas ferramen­ momento, podemos seguir pelas opções “Já sou cliente – login tas gratuitas e com um bom conjunto de funcionalidades e senha”, “Já sou cliente – esqueci minha senha”, “Já sou cliente de apoio à automação dos testes. Por isso, é importante – meu e-mail mudou”, “Não sou cliente – informe CEP”, “Não realizar uma análise de custo-benefício no momento de sou cliente – não sei meu CEP” e “Não sou cliente – estou fora escolher as ferramentas a serem aplicadas em um projeto. do Brasil”. No nosso estudo de caso, consideraremos apenas a A Tabela 1 apresenta uma lista com algumas das ferra­ opção “Não sou cliente – informe CEP”; mentas de automação mais utilizadas. Neste artigo, utilizaremos a ferramenta Selenium IDE para automação de teste funcional usando uma estratégia de teste do tipo capture-replay, porém contextualizada ao domínio de aplicações web. Ferramenta Selenium IDE Selenium IDE é um ambiente de desenvolvimento in­ tegrado para os testes com Selenium. Foi desenvolvido Figura 2. Tela Inicial do Cadastro de Clientes como uma extensão do Firefox e permite gravar, editar e depurar os testes. O Selenium IDE inclui o Selenium Core, 2. A partir da opção anterior, será exibido um formulá­ permitindo gravar e reproduzir os testes no ambiente que rio de cadastro de cliente contendo uma série de campos eles serão executados, de maneira fácil e rápida. (Figura 3); Entre suas funcionalidades, podemos citar: 3. Preenchido o formulário de cadastro, será realizada a vali­ 1. Gravação e reprodução dos testes de forma simples; dação dos dados e confirmação da operação, onde é indicado 2. Seleção de campo inteligente, que captura as informa­ que o cliente foi de fato cadastrado (Figura 4). ções sobre os campos a partir da página; 3. Funcionalidade autocompletar para todos os comandos Projetando Testes para nosso Estudo de Caso de Selenium; Primeiramente, precisamos projetar os testes deste estudo de 4. Possibilita navegar entre os testes; caso passo-a-passo, campo-a-campo utilizando algum critério 52 Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
  • 53.
    Validação, Verificação &Teste Campo Categoria Valor Resultado Esperado para geração de testes funcionais que foi apresentado no artigo “Planejamento de Testes a partir de Casos de Uso” publicado Teste Válido 69046-610 Passar para o PASSO 2 na edição 6 da ES Magazine. É isso que faremos. CEP Mensagem de erro:“CEP Inválido.” Teste Inválido 06543-232 Tabela 2. Casos de Teste para o PASSO 1 Dessa forma, podemos criar um único procedimento de teste responsável pela execução dos dois casos de teste, onde primeiramente seria executado o caso de teste inválido e em seguida o caso de teste válido. • Projetando os testes do PASSO 2: Neste passo, existem ao total 22 campos, sendo que 14 são de preenchimento obrigatório, 5 são opcionais (em cinza na Figura 3) e 3 são somente leitura (gerados a partir de outros campos – cidade, estado e país). A Tabela 3 apresenta os casos de teste gerados para cada campo do formulário utilizando o critério de geração particionamento em classes de equivalência. Observe que cada campo possui no máximo dois casos de teste, de forma que podemos combinar todos os casos de teste inválidos em um mesmo procedimento de teste (obviamente alguns casos de teste válidos também irão compor este pro­ cedimento de teste – procedimento de teste 01 na Tabela 3) e criar um segundo procedimento de teste apenas com casos de teste válidos, confirmando o cadastro do cliente (proce­ dimento de teste 02). A partir de agora, iremos usar a ferramenta Selenium para gra­ var e executar os testes projetados para nosso estudo de caso. Figura 3. Formulário de Cadastro de Clientes Utilizando Selenium para Gravação dos Testes • Projetando os testes do PASSO 1: Como foi dito na Seção Ferramenta Selenium IDE, esta ferra­ Como foi dito na seção anterior, neste passo iremos considerar menta funciona como um plug-in do Firefox, de forma que é apenas a opção “Ainda não sou cliente – Informe seu CEP”. necessário este browser para gravar e reproduzir os testes. Esta opção possui apenas um campo, CEP, e o botão Prosseguir. Então vamos começar? Neste caso, usaremos o critério particionamento em classes Primeiramente, abra o Firefox e acesse o endereço de cadas­ de equivalência para gerar testes válidos e testes inválidos, tro de um novo cliente (https://carrinho.americanas.com.br/ conforme a Tabela 2. portal/meuCadastro.portal). Em seguida, abra a ferramenta Figura 4. Confirmação do Cadastro de Clientes Edição 24 - Engenharia de Software Magazine 53
  • 54.
    Campo Categoria Valor Resultado Esperado Procedimento de Teste Teste Válido Arilo Claudio Dados válidos, verifica os demais campos 02 Nome Teste Inválido Em branco Mensagem de erro:“Nome Inválido.” 01 Teste Válido 14005039731 Dados válidos, verifica os demais campos 02 CPF Teste Inválido 14005039710 Mensagem de erro:“CPF Inválido.” 01 Masculino Masculino Dados válidos, verifica os demais campos 02 Sexo Feminino Feminino Dados válidos, verifica os demais campos 01 Teste Válido 13/09/1982 Dados válidos, verifica os demais campos 02 Data de Nascimento Teste Inválido 31/02/1982 Mensagem de erro:“Data de nascimento Inválida.” 01 Teste Válido 92 2345-6789 Dados válidos, verifica os demais campos 02 Telefone Residencial Teste Inválido Em branco Mensagem de erro:“Telefone residencial inválido.” 01 Telefone Celular Teste Válido 92 8181-8181 Dados válidos, verifica os demais campos 01 e 02 Telefone Comercial Teste Válido 92 3456-7890 Dados válidos, verifica os demais campos 01 e 02 Teste Válido ariloclaudio@gmail.com Dados válidos, verifica os demais campos 02 E-mail Teste Inválido Em branco Mensagem de erro:“E-mail inválido.” 01 Teste Válido arilo Dados válidos, verifica os demais campos 02 Senha Teste Inválido abc Mensagem de erro:“Senha inválida.” 01 Teste Válido Igual ao campo Senha Dados válidos, verifica os demais campos 02 Confirme a Senha Teste Inválido Diferente do campo Senha Mensagem de erro:“A senha e confirmação de senha não conferem.” 01 Teste Válido Arilo Claudio Dados válidos, verifica os demais campos 02 Como gostaria de ser chamado? Teste Inválido Em branco Mensagem de erro:“A senha e confirmação de senha não conferem.” 01 SIM SIM Dados válidos, verifica os demais campos 02 Deseja receber e-mail de ofertas? NÃO NÃO Dados válidos, verifica os demais campos 01 Descrição do Endereço Teste Válido Residencial Dados válidos, verifica os demais campos 01 e 02 Teste Válido Rua B29 Dados válidos, verifica os demais campos 02 Endereço Teste Inválido Em branco Mensagem de erro:“Endereço inválido.” 01 Teste Válido 120 Dados válidos, verifica os demais campos 02 Número Teste Inválido Em branco Mensagem de erro:“Número do endereço inválido.” 01 Complemento Teste Válido Apt 123 Dados válidos, verifica os demais campos 01 e 02 Teste Válido 69046-610 Dados válidos, verifica os demais campos 02 CEP Teste Inválido 06543-232 Mensagem de erro:“CEP inválido.” 01 Teste Válido Alvorada Dados válidos, verifica os demais campos 02 Bairro Teste Inválido Em branco Mensagem de erro:“Bairro inválido.” 01 Tabela 3. Casos de Teste para o PASSO 2 Selenium, que já deve estar instalada em seu Firefox. Ao abrir esta ferramenta, será visualizada sua tela responsável pela gravação dos testes, na qual por padrão ela já está ativada para gravação, como pode ser visualizado no ícone com uma bola vermelha localizado no canto superior direito da tela. Em seguida, sem fazer nada em Selenium, devemos re­ tornar à tela de cadastro de clientes e preencher seguindo primeiramente o procedimento de teste referente ao passo 1. O resultado disto em Selenium deve ser uma tela similar à tela apresentada na Figura 5. Neste momento, podemos interromper a gravação dos testes. Para isso, basta clicar no ícone citado anteriormente de forma que este não apareça como pressionado na tela. Com isso, temos o primeiro roteiro de teste gravado em Selenium. A partir disso podemos salvá- Figura 5. Roteiro de Teste do PASSO 1 lo ou até mesmo reproduzi-lo, repetindo os testes. Iremos falar mais sobre sua reprodução na próxima seção. Para isso, primeiramente temos que nos certificar que a Neste roteiro, foi adicionado um comando verifyTextPresent tela do Firefox está no passo 2 do processo de cadastro (em destaque na Figura 5) que verifica se após digitar um de clientes e precisamos limpar a ferramenta Selenium CEP inexistente, a tela retornada contém a mensagem “CEP para que ela inicie uma nova gravação. Depois de veri­ inválido.” que deveria ser retornada por este caso de teste. ficado, devemos iniciar uma nova gravação e preencher Finalizado o passo 1, passaremos à gravação do passo 2. o formulário de cadastro de clientes primeiramente de 54 Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
  • 55.
    Validação, Verificação &Teste acordo com o procedimento de teste 01 (dados inválidos), é obter exatamente os resultados obtidos na primeira conforme visualizado na Figura 6. Observe que ao final execução. do roteiro de testes foram adicionados comandos para verificar se cada campo que recebeu um valor inválido Utilizando Selenium para Reprodução dos reportou este problema durante a execução dos testes. Testes Depois, devemos repetir o processo (limpar os dados em A reprodução dos testes é bastante simples. Para cada Selenium e iniciar nova gravação) com os dados do proce­ passo, basta abrir o arquivo com o roteiro de teste que dimento de teste 02 (dados válidos), conforme a Figura 7. foi salvo durante a gravação, e então clicar no ícone com Observe que ao final do roteiro de testes foi adicionado um uma seta verde e três barras verdes à sua direita. Neste comando para verificar se a tela resultante após esse proce­ momento, a ferramenta Selenium irá reproduzir todos os dimento foi a tela de cadastro com sucesso (Figura 4). Isso passos feitos no momento da gravação dos testes. Caso foi feito analisando se existia o texto “Olá, Arilo Claudio”, cada comando seja executado com sucesso, a linha é que deveria ser exibido após o cadastro do usuário que optou pintada na cor verde. Caso uma falha tenha ocorrido, a por ser chamado de “Arilo Claudio”. linha é pintada com a cor vermelha, indicando que houve problemas que precisam ser analisados. A Figura 8 exibe uma falha ocorrida no primeiro co­ mando ao tentar reproduzir o procedimento de teste 02 do PASSO 2 (sua linha está em vermelho). Figura 6. Roteiro de Teste do PASSO 2 (Procedimento de Teste 01 – Dados Inválidos) Figura 8. Reprodução do Procedimento de Teste 02 do PASSO 2 com uma falha OBS: até o dia 11/03/2010, se você não preenchesse o CEP no formulário de cadastro, o sistema apresentava uma falha (Figura 9). Neste caso, não teríamos como gravar testes com esta condição, pois eles falhariam e não teríamos como reproduzi-los em um segundo momento. Em situações como essa, a equipe de desenvolvimento deve primeiramente corrigir o problema, e então os testes devem ser gravados. Figura 7. Roteiro de Teste do PASSO 2 (Procedimento de Teste 02 – Dados Conclusões Válidos) Este artigo apresentou um possível mecanismo para Feito isso, temos nossos roteiros de teste gravados e sal­ automação de teste funcional para aplicações web a partir vos (devemos salvá-los a cada gravação), e a partir de então do uso da ferramenta Selenium. Tal mecanismo adotou a poderemos reproduzi-los sempre que necessário. estratégia de geração de casos de testes a partir de casos Observe que a gravação só pode ser reproduzida caso a de uso apresentada em outro artigo publicado na edição execução inicial dos testes (realizada durante a gravação) 6 da ES magazine. tenha sido bem sucedida, ou seja, os testes não falha­ O objetivo foi apresentar uma solução de automação ram, pois o objetivo durante as reproduções dos testes dos testes, deixando destacado que a automação só faz Edição 24 - Engenharia de Software Magazine 55
  • 56.
    Figura 9. Falhareal ao tentar cadastrar um cliente sem informar seu CEP sentido a partir do bom conhecimento técnico sobre testes Referências de software pela equipe de testes, caso contrário há grande KOLAWA, A.; HUIZINGA, D. (2007).  Automated Defect Prevention: Best Practices in Software chance de os testes serem malsucedidos. Ferramentas auto­ Management.Wiley-IEEE Computer Society Press. p. 74. ISBN 0470042125. matizam o conhecimento técnico da equipe de teste, mas não conseguem passar sobre este conhecimento para aumentar MARICK, B. “When Should a Test Be Automated?”StickyMinds.com. Acessado em 10/03/2010. . a qualidade dos testes. Uma vez que este conhecimento PRETSCHNER, A. (2005), “Model-based testing” Proceedings of 27th International Conference on , é provido pela equipe de teste, ferramentas contribuem Software Engineering, (ICSE‘05), pp. 722-723. significativamente para a redução do esforço dos testes e aumento de sua qualidade. UTTING, M.; LEGEARD, B.; (2007),“Practical Model-Based Testing: A Tools Approach” ISBN-13: 978-0- , 12-372501-1, Morgan-Kaufmann. Dê seu feedback sobre esta edição! Feedback CRAIG, R.D., JASKIEL, S. P.,“Systematic Software Testing”Artech House Publishers, Boston, 2002.  , eu s Dê A Engenharia de Software Magazine tem que ser feita ao seu gosto. PRESSMAN, R. S., “Software Engineering: A Practitioner’s Approach” McGraw-Hill, 6th ed, Nova York, , sobre e Para isso, precisamos saber o que você, leitor, acha da revista! NY, 2005. s ta edição Dê seu voto sobre este artigo, através do link: ROCHA, A. R. C., MALDONADO, J. C., WEBER, K. C. et al., “Qualidade de software – Teoria e prática” , www.devmedia.com.br/esmag/feedback Prentice Hall, São Paulo, 2001. 56 Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
  • 57.
    Desenvolvimento Nesta seçãovocê encontra artigos voltados para diferentes abordagens de apoio ao desenvolvimento de projetos de software Testes funcionais automatizados com Hudson e Selenium RC Fabrício Nogueira de Almeida fnalmeida@gmail.com De que se trata o artigo? É pós-graduando do Curso de Gerência de pro- Definir uma abordagem para criação e execução de J jetos em engenharia de software pelo centro de Ensino Superior de Juiz de Fora - CES, Bacharel em testes funcionais automatizados. Sistemas de informação pela Faculdade Metodis- á é bastante aceita pela comunidade ta Granbery de Juiz de Fora e Analista de Sistemas de desenvolvedores o uso de tes­ Para que serve? da Uptodate Consulting. tes para auxiliar na qualidade dos O modelo proposto automatiza a execução de testes Victor Vidigal Ribeiro softwares desenvolvidos. Dentre os tipos funcionais criados através da ferramenta Selenium victorvidigal@gmail.com de testes utilizados existe o teste funcional, IDE, o que proporciona menor dependência de recur- É mestrando em Engenharia de Sistemas e Com- que verifica se o sistema está cumprindo sos humanos nessa tarefa e auxilia a gerenciamento putação pela COPPE/UFRJ e pós-graduando do com seus requisitos utilizando a perspec­ da execução dos testes. Curso de Gerência de projetos em engenharia de tiva do usuário. Na prática, rodar testes software pelo Centro de Ensino Superior de Juiz de Fora - CES. funcionais significa executar o sistema e Em que situação o tema é útil? verificar seu comportamento através dos Em ambientes onde é preciso testar constan- Marco Antônio Pereira Araújo retornos fornecidos por este sistema. temente os artefatos gerados, e em projetos maraujo@devmedia.com.br Para que não haja a necessidade de exe- onde os testes são complexos e demandam É Doutor e Mestre em Engenharia de Sistemas e Computação pela COPPE/UFRJ, Especialista em cutar esses testes manualmente existem muitos recursos humanos. Métodos Estatísticos Computacionais e Bacharel ferramentas que, depois de programa­ em Matemática com Habilitação em Informática das, executam o sistema automaticamen­ pela UFJF, Professor e Coordenador do Curso de Ba- te e verificam seus retornos. Uma dessas Este artigo propõe a construção de um charelado em Sistemas de Informação do Centro de ferramentas é a Selenium IDE, utilizada ambiente de integração contínua onde Ensino Superior de Juiz de Fora, Professor do Curso de Bacharelado em Sistemas de Informação da Fa- neste artigo. testes funcionais são executados periodi­ culdade Metodista Granbery, Professor e Diretor do Uma técnica que pode ser utilizada em camente sobre um sistema, disponível em Curso Superior de Tecnologia em Análise e Desen- conjunto com os testes funcionais é a um repositório Subversion (SVN) neste volvimento de Sistemas da Fundação Educacional técnica de integração contínua. Com esta caso. O artigo mostra o funcionamento de D. André Arcoverde, Professor do Curso de Bacha- técnica é possível uma maior confiabili­ uma pequena aplicação que calcula se um relado em Ciência da Computação da Faculdade Governador Ozanam Coelho, Analista de Sistemas dade no sistema que está no repositório, aluno foi ou não aprovado, que é utilizada da Prefeitura de Juiz de Fora, Editor da Engenharia pois possibilita que os testes definidos como exemplo. Depois disso, explica como de Software Magazine. sejam executados periodicamente. gerar testes funcionais com a ferramenta Edição 24 - Engenharia de Software Magazine 57
  • 58.
    Selenium IDE ecomo importar esses testes para o framework Instalando o selenium IDE de testes JUnit. Depois disso, é demonstrado como os testes que Podemos então iniciar a construção dos testes funcionais foram exportados podem ser executados através da ferramenta utilizando o Selenium IDE, um plug-in para o navegador Selenium RC e, posteriormente, como executar esses testes em Firefox que permite gravar, editar, depurar e reproduzir um servidor de integração contínua chamado Hudson. Para criar testes funcionais para páginas web. o projeto que será testado foi utilizado o Maven, uma ferramenta Para instalar o Selenium IDE, acesse o endereço https:// de gerenciamento e automação de projetos em Java que permite addons.mozilla.org/pt-BR/firefox/ usando o navegador uma maior integração entre o projeto a ser testado e o Hudson. Firefox, e informe no campo de busca o termo selenium ide. Após isto, clique no link Selenium IDE que aparece na Aplicação a ser testada lista e, em seguida, no botão Add to Firefox, como mostra Para a execução dos testes a serem demonstrados neste artigo a Figura 3. foi criada uma aplicação que calcula a aprovação de um aluno. É importante conhecer o funcionamento da aplicação para que se possa entender os testes elaborados. Esta aplicação funciona através de um browser e recebe o nome, frequência, nota 1, nota 2 e nota final do aluno como parâmetros de entrada. Além desses parâmetros, o sistema possui ainda um botão Calcular Aprovação, como pode ser visto na Figura 1. Figura 3. Instalação do Selenium IDE Após a instalação, o plug-in estará disponível através do menu Ferramentas do navegador. Criando os casos de teste com Selenium IDE Para criar os casos de testes funcionais, primeiro é pre­ ciso acessar a aplicação de exemplo, criada anteriormente, Figura 1. Tela do sistema com o navegador Firefox. Depois, no menu Ferramentas, selecione a opção Selenium IDE. Após inserir os dados e clicar no botão Calcular Aprovação, Uma nova janela, como mostra a Figura 4, se abrirá o sistema emite uma mensagem para o usuário informando permitindo iniciar a gravação dos testes. Observe no se o aluno foi ou não aprovado seguindo as seguintes regras: canto superior direito dessa janela se o botão que indica caso a frequência do aluno for menor que 75, ele é reprovado. o status da gravação está pressionado. Caso este botão Caso contrário, a média entre a nota 1 e a nota 2 é calculada. esteja pressionado, cada ação do usuário no browser será Se esta média for menor que 30, o aluno é reprovado, caso gravada pelo Selenium IDE. Por ação pode-se entender, seja maior ou igual a 70, o aluno é aprovado. Se a média entre por exemplo, o preenchimento de um campo ou um clique as duas notas for maior ou igual a 30 e menor que 70, então é em um botão. calculado a média entre a média anterior e a nota final. Se esta Para iniciar gravação dos testes basta preencher os cam­ nova média for maior ou igual a 50, o aluno é aprovado. Caso pos da aplicação com os valores descritos na Tabela 1, contrário, ele é reprovado. referentes ao primeiro caso de teste a ser realizado, consi­ A Figura 2 mostra a mensagem que o sistema exibe ao usuário derando um aluno sendo reprovado por infrequência. após clicar no botão Calcular Aprovação, em um caso que o aluno é aprovado. É bastante importante observar que este tipo Campo Valor de resposta do sistema é que possibilita a execução dos testes Nome João funcionais, pois através dessas mensagens é que os testes vão Frequência 74 verificar se o sistema agiu como esperado ou não. Nota 1 0 Nota 2 0 Nota Final 0 Figura 2. Mensagem de resposta Tabela 1. Reprovação por infrequência 58 Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC
  • 59.
    Validação, Verificação eTeste Seguindo os procedimentos acima, podem ser gerados mais 4 casos de testes com os dados apresentados nas Tabelas 2, 3, 4 e 5. Campo Valor Nome João Frequência 75 Nota 1 70 Nota 2 70 Nota Final 0 Tabela 2. Aprovação por nota Campo Valor Nome João Frequência 75 Nota 1 29 Nota 2 30 Nota Final 0 Tabela 3. Reprovação por nota Campo Valor Nome João Figura 4. Janela do Selenium IDE Frequência 75 Nota 1 30 Após o preenchimento dos campos, clique no botão Calcular Nota 2 30 Aprovação. O sistema retornará a mensagem dizendo que o aluno foi reprovado. Nota Final 69 Neste momento, é preciso informar ao Selenium IDE o que Tabela 4. Reprovação por nota final era esperado caso o valor 74 fosse digitado para a frequência e todas as notas fossem preenchidas com zero. Neste caso, ob­ Campo Valor servando as regras descritas no início do artigo, o aluno seria Nome João reprovado por infrequência. Logo, espera-se que o sistema emi­ Frequência 75 ta uma mensagem informando que o aluno foi reprovado. Nota 1 30 Para passar esta informação ao Selenium IDE, selecione o Nota 2 30 texto da mensagem, clique com o botão direito do mouse e escolha a opção verifyTextPresent, como mostra a Figura 5. Nota Final 70 Em seguida, deve-se terminar a gravação do teste, clicando no Tabela 5. Aprovação por nota final botão do canto superior direito da ferramenta. Por fim, deve-se gravar o caso de teste, a partir do menu Arquivo. Depois de criar os casos de testes necessários eles devem ser exportados como um arquivo de teste do framework JUnit para que possam ser executados com o Hudson e o Selenium RC. Essas duas ferramentas são necessárias para a execução automática dos testes funcionais e serão vistas posteriormente neste artigo. Para exportar os testes gravados, acesse a opção Arquivo / Exportar Teste Como / Java (JUnit) Selenium RC, informe um nome para o arquivo precedido pela extensão .java e clique sobre o botão Salvar. Com isto, será gerado um arquivo de teste do JUnit baseado no teste que acabou de ser gravado. É preciso exportar cada caso de teste gravado com o Selenium IDE. Depois de exportar cada arquivo, é preciso editá-los e alterar a URL que indica a página inicial do teste. Para Figura 5. Gravando resultado do caso de teste isso, altere o primeiro parâmetro do método SetUp, de Edição 24 - Engenharia de Software Magazine 59
  • 60.
    http://change-this-to-the-site-you-are-testing/ para oendereço para programar a execução dos testes e criar um ambiente de do servidor da aplicação. Neste exemplo, a URL inicial é http:// testes automatizado. localhost:8000/. Listagem 1. Arquivo pom.xml Criando o projeto de testes <project xmlns=”http://maven.apache.org/POM/4.0.0” xmlns:xsi= Neste ponto do artigo, já temos os casos de testes exportados ”http://www.w3.org/2001/XMLSchema-instance” como um arquivo executável pelo JUnit. Precisamos agora criar xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 um projeto onde esses testes estarão contidos. http://maven.apache.org/maven-v4_0_0.xsd”> Para criar este projeto será utilizado o IDE Eclipse com o plug- <modelVersion>4.0.0</modelVersion> in m2eclipse que permite a integração entre o IDE e o Maven. <groupId>CalcularAprovacaoSelenium</groupId> <artifactId>CalcularAprovacaoSelenium</artifactId> Este plug-in pode ser instalado através da URL http:/ /m2eclipse. <packaging>jar</packaging> sonatype.org/sites/m2e. A criação de um projeto utilizando o <version>0.0.1-SNAPSHOT</version> Maven não foi por acaso. Esse gerenciador de projetos trabalha <name>CalcularAprovacaoSelenium</name> muito bem com o servidor de integração contínua Hudson, que <url>http://maven.apache.org</url> será utilizado posteriormente. <dependencies> <dependency> Para criar o projeto, abra o Eclipse e acesse o menu File / New <groupId>junit</groupId> / Other, e escolha a opção Maven / Maven Project. Depois disso, <artifactId>junit</artifactId> é preciso dar um nome ao projeto criado. No artigo o projeto <version>3.8.2</version> recebeu o nome de CalcularAprovacaoSelenium. <scope>test</scope> Depois de criado, deve-se alterar o arquivo pom.xml, gerado </dependency> <dependency> pelo Maven, para que fique semelhante à Listagem 1. Com essas <groupId>org.seleniumhq.selenium.client-drivers</groupId> alterações no arquivo, as dependências do JUnit e Selenium-Java- <artifactId>selenium-java-client-driver</artifactId> Client, necessárias para a execução dos testes, são adicionadas <version>1.0.1</version> no projeto. </dependency> Após criar o projeto e definir suas dependências, devem-se co­ </dependencies> </project> piar os testes gerados através da ferramenta Selenium IDE para o pacote test. A Figura 6 mostra a estrutura do projeto criado. O Selenium RC pode ser baixado no endereço http://seleniu­ mhq.org/download/. Depois de baixá-lo, extraia seu conteúdo em algum diretório do computador. No exemplo demonstrado no artigo, é utilizado o diretório C:. Para executar o Selenium RC, deve-se abrir o prompt de co­ mando e digitar os comandos demonstrados na Listagem 2. O primeiro comando acessa o diretório onde o JRE (Java Run­ time Environment) está instalado e a linha seguinte executa o Selenium RC. Listagem 2. Execução do Selenium RC cd C:Program Files (x86)Javajre6bin java -jar C:selenium-remote-control-1.0.1selenium-server-1.0.1 selenium-server.jar Figura 6. Estrutura do projeto de testes Uma dica para agilizar este processo é criar um arquivo com Tanto o projeto de teste quanto o projeto a ser testado devem extensão .bat com o conteúdo da Listagem 2. ser enviados para um repositório de dados. Neste artigo, será Após executar o Selenium RC, uma janela como a ilustrada utilizado o SVN. Como o uso de repositórios já é bastante na Figura 7 é exibida. Essa janela deve ser mantida sempre comum, isso não será abordado nesse artigo. aberta para que o Selenium RC fique ativo possibilitando a execução dos testes. Selenium Remote-Control Neste ponto será possível testar a execução dos testes dire­ O Selenium Remote-Control, ou simplesmente Selenium tamente pelo Eclipse. Para isso, devemos clicar com o botão RC, permite a execução automatizada de testes criados no direito sobre o projeto, acessar a opção Run As e depois Ma­ Selenium IDE. No ambiente proposto, será utilizado o Sele­ ven Test, como mostra a Figura 8. Com esse procedimento, o nium RC juntamente com o servidor de integração Hudson projeto será executado chamando o Maven2 e atribuindo ao 60 Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC
  • 61.
    Validação, Verificação eTeste parâmetro Goal o valor test, indicando que os testes do projeto endereço http://localhost:8080/hudson. A Figura 9 mostra a devem ser rodados. tela inicial do servidor de integração Hudson. Figura 9. Tela inicial do Hudson Figura 7. Prompt Selenium RC O próximo passo será configurar o Hudson. Para isso, de­ vemos acessar no menu lateral a opção Gerenciar Hudson e Instalação e configuração do servidor de integração depois Configure System. hudson Entre as principais configurações do Hudson, deve ser Para garantir mais produtividade e melhor controle sobre a habilitada a instalação do Maven através da sua opção execução dos testes, vamos utilizar o Servidor de Integração Install automatically. Marcando essa opção, o Hudson Hudson, que permite a execução dos testes funcionais de for­ se encarregará de baixar as bibliotecas necessárias para ma automatizada e contínua. O Hudson será responsável por construção de projetos do tipo Maven2. É preciso também baixar o projeto de testes direto do repositório SVN e executar incluir a instalação do JDK desmarcando sua opção Install os testes no Selenium RC através das configurações feitas com automatically e informando o caminho onde o JDK foi ins­ o Maven2, e conforme agendado no aplicativo. talado no campo JAVA_HOME. A Figura 10 ilustra como é O Hudson é um projeto web desenvolvido em Java e dispo­ feita essa configuração. nibilizado para download através do link https:/ /hudson.dev. java.net/ e pode ser executado através de um servidor web. Neste exemplo, será utilizado o Apache Tomcat, disponível para download em http://tomcat.apache.org/. Figura 10. Configuração Hudson Para mais detalhes sobre as opções de configuração dis­ ponível pelo Hudson, veja o artigo Integração contínua com Hudson, Maven2, TestNG e Subversion publicado na edição 21 da Engenharia de Software Magazine. Criando tarefas do hudson Concluída a etapa de configuração, é possível criar uma tare­ fa e agendar a execução dos testes. Para isso, deve-se acessar o menu lateral Nova Tarefa e, na tela seguinte, deve-se informar o nome da tarefa a ser criada. Nesse exemplo, é chamada de TesteSeleniumCalcularAprovacao. Em seguida, selecione a opção Construir um projeto maven2 e clique em OK. Após isto, uma nova janela será exibida, sendo possível configurar como será a construção dessa tarefa. Em Geren­ Figura 8. Executando os testes no eclipse ciamento de código fonte, deve-se marcar a opção Subversion, e depois informar o caminho do projeto no repositório SVN Depois de instalado o Tomcat, deve-se copiar o arquivo hud­ no campo URL do Repositório. Essa configuração indicará ao son.war para a pasta webapps e reiniciar o servidor para fazer Hudson o caminho que ele utilizará para baixar os arquivos o deploy da aplicação. Feito isso, acesse o Hudson através do do projeto. Edição 24 - Engenharia de Software Magazine 61
  • 62.
    A seguir épossível configurar a periodicidade de execução dos testes. Para isso, a opção Construir periodicamente em Disparadores de construção deve ser marcada. Na caixa de texto deve ser inserido o seguinte valor: * * * 5. Essa configuração indica ao Hudson que esta tarefa deve ser executada no minuto cinco de cada hora. Clicando sobre o ícone localizado ao lado direito da caixa de texto, o Hu­ dson fornece um tópico de ajuda que explica com detalhes as opções de agendamento. A próxima configuração a ser feita é indicar no campo POM Raiz o caminho para o arquivo pom.xml, que mantém as configurações do Maven2 no projeto. Neste exemplo, o cami­ nho do arquivo de configuração é <NOME DO PROJETO>/ pom.xml. A opção Goals and options deve ser preenchida Figura 12. Console Output com o valor test. Esse parâmetro indica ao Hudson que deve executar o Maven para rodar os testes do projeto. Conclusão Por fim, é possível configurar o Hudson para enviar noti­ Esse artigo procurou mostrar como montar um ambiente ficações de email a cada construção executada com falhas. de testes funcionais automatizados utilizando ferramentas Para isso, a opção Notificação de e-mail deve ser marcada e Open Source. Esse ambiente foi construído com o servidor deve-se ainda informar os e-mails para os quais desejamos de integração Hudson, o gerenciador de projetos Maven2, que sejam enviadas notificações. repositório de dados SVN, framework de testes JUnit e um Depois de realizadas as devidas configurações, as altera­ aplicativo responsável por executar os testes gerados através ções devem ser salvas através do botão Salvar. Após isto, do Selenium IDE, o Selenium RC. uma tela como a mostrada na Figura 11 será exibida. Neste Executar testes muitas vezes pode se tornar uma tarefa que ponto é possível construir uma tarefa manualmente clicando demanda tempo e consome muito recursos em um projeto. Mas no link Construir Agora. devido a sua importância dentro da Engenharia de Software, deixá-la de lado pode significar entregar um produto com alto índice de falhas para o cliente. Com a alternativa proposta neste artigo, ganhamos um alto índice de produtividade na execução dos testes funcionais garantindo mais qualidade ao produto final que será entregue ao cliente. Dê seu feedback sobre esta edição! Feedback eu s Dê A Engenharia de Software Magazine tem que ser feita ao seu gosto. sobre e Para isso, precisamos saber o que você, leitor, acha da revista! s ta edição Figura 11. Tela principal da tarefa Dê seu voto sobre este artigo, através do link: www.devmedia.com.br/esmag/feedback O Hudson exibe em Histórico de construções o status das Links construções já realizadas e também aquelas que estão em execução. Clicando sobre uma construção e acessando a op­ Hudson http://hudson-ci.org/ ção Console Output é possível visualizar o log de execução da construção, como mostra a Figura 12. Maven Depois de fazer essas configurações, o Hudson irá baixar http://maven.apache.org/ o sistema periodicamente do repositório e irá executar os Tomcat testes funcionais criados no Selenium IDE. Com isso, pode- http://tomcat.apache.org/ se economizar bastante esforço da equipe de testes que não precisará executar todos os testes do sistema a cada alteração SeleniumRC http://seleniumhq.org/projects/remote-control/ realizada pelos programadores. Além disso, o sistema que está no repositório pode ser considerado mais confiável, Subversion pois ele está sempre sendo testado. http://subversion.tigris.org/ 62 Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC
  • 63.
    Validação, Verificação eTeste Edição 24 - Engenharia de Software Magazine 63
  • 64.
    AMIGO ...só pra lembrar, Existem coisas sua assinatura pode estar acabando! que não conseguimos ficar sem! Renove Já! www.devmedia.com.br/renovacao Para mais informações: www.devmedia.com.br/central 64 Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC