• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Revista Engenharia de Software n° 44
 

Revista Engenharia de Software n° 44

on

  • 4,006 views

 

Statistics

Views

Total Views
4,006
Views on SlideShare
4,006
Embed Views
0

Actions

Likes
4
Downloads
363
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Revista Engenharia de Software n° 44 Revista Engenharia de Software n° 44 Document Transcript

    • 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 itensColaboradores que podem estar sob controle da GCS e os níveis de controle exigidos sobre estesRodrigo Oliveira Spínola itens irá variar de empresa para empresa ou mesmo de projeto para projeto. Sendorodrigo@sqlmagazine.com.br assim, o uso desta prática em conformidade com modelos de maturidade mantidosMarco Antônio Pereira Araújo por entidades que possuam credibilidade nacional e internacional, e também o usoEduardo 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 poisRomulo 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 paraNa Web implementar a Gerência de Configuração de Software em pequenas empresas. Umawww.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 MagazineAtendimento ao LeitorA 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ínolaalgum esclarecimento sobre assinaturas, exemplares anteriores, endereço de rodrigo@sqlmagazine.com.brbancas 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çãoCristiany 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 eKaline Dolabella Desenvolvimento Orientado a Objetos. Consultor para implementação do MPS.BR. AtuaGerente 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 - EditorPublicidade (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ísticosKaline Dolabellapublicidade@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çãoFale 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çãovontade 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.ÍNDICEEngenharia06 - Testes de segurança Eduardo Habib14 - Gerência de Configuração Alberto Boller Filho, Rodrigo Oliveira Spinola, Marcelo Nascimento Costa e Marcos Kalinowski31 - Medição de Software Monalessa Perini BarcellosAgilidade 38 - A Comunicação no Processo de Software Márcia Regina Simm CantúPlanejamento e Gerência43 - Análise Quantitativa de Riscos e suas Técnicas Marcio Souza, Cristine Gusmão e Hermano PerrelliDesenvolvimento49 - Automatizando Testes Funcionais em Aplicações Web Arilo Cláudio Dias Neto57 - Testes funcionais automatizados com Hudson e Selenium RC Fabrício Nogueira de Almeida, Victor Vidigal Ribeiro e Marco Antônio Pereira Araújo4 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ão6 Engenharia de Software Magazine - Testes de segurança
    • Validação, Verificação & Testemais comuns em aplicações web e algumas ferramentas livres Gartner, em que se estima que os ataques contra os sistemasque 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 derios de informações que continham documentos estáticos, bancos, que são os que mais investem em segurança, não sãoe os navegadores web foram criados como uma forma de inteiramente seguros como dizem ser e estão sujeitos a falhasvisualização desses documentos. A maioria dos sites não de segurança. Outro estudo, do instituto de pesquisa WhiteHatautenticava usuários porque não havia necessidade já que Security, publicou dados demonstrando que cerca de 64% dosa mesma informação era exibida para todos os usuários. Se 1364 sites de companhias avaliados possuíam pelo menos umaum 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 opúblico. No máximo, o invasor poderia escrever algumconteúdo no site ou utilizar o servidor como repositóriode arquivos. Hoje em dia a internet é completamente diferente. Amaioria dos web sites são aplicações complexas e possuemum fluxo de informações nos dois sentidos (servidor enavegador). Elas suportam login, transações financeiras eacesso 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 webcaso acredite que suas informações confidenciais serãoexibidas para terceiros. Atualmente, para as aplicações web proverem as funcio­ Figura 1. Total de incidentes reportados ao CERT.brnalidades mais básicas, muitas vezes é necessário acessarsistemas internos da empresa e esses sistemas, muitas Isso é muito crítico para as empresas já que o aumento dovezes, contêm dados sigilosos. Uma falha em uma dessas faturamento das empresas que comercializam produtos naaplicações web pode comprometer todo o servidor. Um web está diretamente ligado à sua reputação. Poucas pessoasinvasor que conseguir comprometer a aplicação web pode gostariam de fazer negócio com um site inseguro e, devido aroubar informações pessoais e com isso realizar ações isso, as organizações não costumam publicar detalhes sobremaliciosas 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 doaplicaçõ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 aumentoque 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 dePor 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: aocupação com segurança, notícias de invasões continuam evolução constante da tecnologia utilizada nas aplicaçõesno noticiário e o número de incidentes de segurança tem web. Como a tecnologia utilizada no desenvolvimento deaumentado 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 deposta 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 criados2009 foram registradas 358.343 notificações de incidentes após o desenvolvimento e podem ser exploradas até seremde 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 adentes registrados em 1999, primeiro ano da medição. Esses frequência de ocorrência conforme os desenvolvedores senú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çãode 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çãoque auxiliam no teste de segurança de aplicações web. Con­ faça tratamento no cliente para evitar isso. Portanto, qualquertudo, 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 pessoasapresentação de extensões para navegadores e ferramentas mal intencionadas utilizem essas entradas para comprometer aOpen 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 qualquertraste 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 paraOs 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ãosuas 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 dasaplicações web ainda contém falhas de segurança, falhasessas que não têm nada a ver com a utilização ou não deSSL. A utilização da tecnologia SSL é importante porqueela protege a integridade do dado durante a transição entreo navegador do usuário e o servidor web. Entretanto, SSLnão irá impedir os ataques que comprometem diretamenteos servidores ou os clientes de uma aplicação como ocorrena maioria dos ataques. Segue abaixo algumas falhas que não são resolvidas com autilização de SSL e na Figura 2, sua frequência de ocorrênciasegundo 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 ondea aplicação não consegue proteger o acesso aos seus dados Existem ferramentas que testam automaticamente um conjuntoe funcionalidades, permitindo que o invasor veja dados grande de entradas visando encontrar falhas. Alguns exemplosprivados 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 depara 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 bancoinformações de outros usuários ou acessos restritos; de dados.• Vazamento de informações: Essa falha ocorre quandoas aplicações divulgam, sem intenção, informações sobre Nas próximas seções serão apresentadas ferramentas livres esuas configurações, processos internos ou privacidade que podem ser utilizadas para realizar os testes de segurançadevido 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 servidorde aplicação ou do banco de dados utilizado, por exemplo, Montando seu ambiente de testes com ferramentas livrespode 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 o8 Engenharia de Software Magazine - Testes de segurança
    • Validação, Verificação & Testeteste de segurança seja mais efetivo, exige-se a é convidado a encontrá-la e, caso o testador não a encontre, o WebGoatutilização de ferramentas adicionais para que seja permite a solicitação de dicas para a identificação da falha. Caso não sepossível encontrar mais falhas de segurança. Mui­ consiga identificar a falha, após dicas de como encontrá-la, é possíveltas dessas ferramentas funcionam em conjunto ainda consultar uma descrição da solução. Se mesmo assim o testador nãocom o navegador, quer como extensões que modi­ entender como encontrar a falha, pode-se consultar vídeos demonstrandoficam a sua funcionalidade, ou como ferramentas passo a passo como identificá-la. O WebGoat é uma aplicação de extremaexternas que funcionam ao lado do navegador e necessidade, principalmente para iniciantes nos testes de segurança e quemodificam sua interação com o aplicativo alvo. querem aprender a realizar alguns testes. Os exemplos de utilização dasPara testar uma aplicação procurando por falhas ferramentas e extensões para navegadores apresentadas nesse artigo foramde 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 citadasalgumas extensões para o Firefox e ferramentas Navegadoreslivres utilizadas para auxiliar o testador durante Um navegador web não é exatamente uma ferramenta hacker. Porém, aos 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 mundoFerramentas necessárias para a realização compreendendo, segundo alguns estudos, cerca de 25% do mercado edos 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õespossuir 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 dointerceptador 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 existemsuítes que se tornaram muito poderosas porpossuírem, além dos Proxies, um conjunto deoutras funções projetadas para ajudá-lo no ataquea aplicações web. A segunda categoria principal de ferramenta éconhecida como Web Spider. Essas ferramentasagem solicitando páginas web, analisando os linkspara outras páginas, e em seguida, solicitandoessas páginas. Eles continuam recursivamente atéque todo o conteúdo de um site seja descoberto. A terceira categoria principal de ferramenta é oScanner de aplicação web. Essas ferramentas sãoconcebidas para automatizar muitas das tarefasenvolvidas no ataque a uma aplicação web reali­zando desde o mapeamento inicial até a sondagempor vulnerabilidades. Essas ferramentas fazemuma busca automática por toda a aplicação subme­tendo dados e analisando as respostas para, comisso, tentar encontrar automaticamente falhas desegurança conhecidas. A quarta categoria principal de ferramenta ne­cessária, principalmente quando o testador querrealizar alguns testes em seu ambiente, é umaaplicação cheia de falhas onde ele possa fazeralguns experimentos. Essa aplicação existe. OWebGoat é uma aplicação Web Open Source doprojeto OWASP. Nessa aplicação as falhas foraminseridas propositalmente e seu principal objetivoé ser um laboratório onde o testador aprende, naprá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 funcionamrespostas e modificá-las, e, além disso, muitas vezes utiliza- Cada suíte de testes integrados contém várias ferramentasse mais de um Proxy durante o teste, essa extensão é impor­ complementares que compartilham informações sobre atante para agilizar esse processo de seleção e modificação aplicação alvo. Normalmente, o testador interage com ado 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 todasnavegador; 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 dosvisualizar 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 localde sessão, pode-se utilizar vários processos do mesmo na­ na própria máquina. O Proxy é, então, configurado paravegador, cada um com uma sessão diferente sobre o pedido. escutar essa porta e receber todos os pedidos emitidos peloPor exemplo, quando estiver testando o controle de acesso, navegador e repassá-lo ao destino. Como ele tem acesso aospode-se utilizar uma instância do navegador logada com um dois sentidos da mensagem entre o navegador e o servidorusuário com mais privilégio e outra logada com uma sessão web e age como um interceptador, ele consegue barrar cadacom um usuário com poucos previlégios e assim, testar rapi­ mensagem para revisão e modificação pelo usuário, paradamentte a aplicação com poucos pedidos de visitas; só então encaminhá-la ao destino.• É possível limpar os dados que um navegador guardasobre alguma aplicação (principalmente dentro de cookies Outras características comuns presentes nessase cache) de forma a iniciar novamente com o pedido como suítesum 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 possuemabri-lo em uma nova janela ou guia para explorar uma fun­ uma riqueza de outros recursos para ajudar nos testes decionalidade 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 comorealizados com muito mais facilidade. Apesar disso, para host de destino, url, método, tipo de recurso, códigorealizar 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 permiteOutras 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 eeram 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 dasum grande número de suítes, cada uma contendo muitas requisições e respostas. Esta função pode ser útil emferramentas interconectadas desenvolvidas para auxiliar inúmeras situações, por exemplo, para reescrever o valorem todas as tarefas envolvidas no ataque a uma aplicação de um cookie ou outro parâmetro em todos os pedidosweb. Todas as funcionalidades referentes a Proxies Inter­ visando remover diretivas de cache, para simular umceptador citadas no restante desse artigo estão presentes navegador específico modificando o cabeçalho e assimno 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 queserão interceptadas• Acesso a funcionalidades de Proxy que permitem que se nave­gue no histórico de requisições e respostas, possibilitando, comisso, que o testador identifique requisições suspeitas de possuíremproblemas de segurança e reemita o pedido, quantas vezes forpreciso 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 quandoFigura 4. O WebScarab permite a visualização do Histórico das você está explorando vulnerabilidades diversas, incluindorequisiçõ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 qualquercação, funcionalidades essas conhecidas como Web Spiders. Os sequência.Web Spiders agem solicitando páginas web, analisando os linkspara outras páginas, e em seguida, solicitando essas páginas. Uma ressalva é que, todas as possíveis falhas apontadasEles 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 percaescondidos. muito tempo analisando os possíveis defeitos. O autor deste artigo desconhece, até a presente data, uma ferramenta livreScanners 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 quantousando 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 ferramentasa 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 adicionaisaná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 outrasracy and Time Costs of Web Application Security Scanners, mesmo as funcionalidades que visam atender a necessidades específicasferramentas 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 trabalharemo que faz com que não se possa confiar cegamente nessas ferra­ em situações inusitadas. Os recursos abaixo estão disponíveismentas 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, conformeRequisiçõ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 visualizea sua resposta. Embora simples, esta função muitas vezes éextremamente útil quando se está investigando uma possívelvulnerabilidade 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 sobreo comportamento da aplicação. Logicamente, com uma ferramenta com as funções integradasvocê pode recuperar rapidamente uma requisição interessantede outro componente utilizado no teste (Proxy, spider, etc.) parainvestigação manual. Veja a Figura 6 para um exemplo de umatela do WebScarab onde é possível realizar a modificação deuma 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 osFigura 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çãoposterior, e possibilitando que uma requisição modificada seja gzip, codificação de transferência em partes, e status 100 derecuperada 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 seremrada seja alterada e estendida de forma arbitrária por código tão boas quanto as ferramentas comerciais disponíveis node 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álisepermitindo 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 podemConclusã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 queutiliza softwares livres para testar a segurança de aplicativos Feedback Dê seu feedback sobre esta edição! euna 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 eo download das ferramentas descritas para que o próprio Para isso, precisamos saber o que você, leitor, acha da revista! s ta ediçãotestador 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/feedbackbastante, 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 quantidade14 Engenharia de Software Magazine - Gerência de Configuração
    • Projetode 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, omais 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 daGerência de Configuração de Software (GCS). A Gerência Produtos de software normalmente envolvem quantidadesde Configuração de Software tem como objetivo gerenciar significativas de artefatos que são manuseados por diversase 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 analiseum 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 sabersob controle da GCS e os níveis de controle exigidos sobre delas ou ainda sem um controle que vise melhorar a qualidadeestes 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 deconformidade 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 regrase 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 deempresa 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çãoe pessoal qualificado para manter tais práticas. Entretanto, do sistema;quando voltamos a olhar para as pequenas empresas, ocenário é exatamente o oposto. As dificuldades e o custo Conceitos e Terminologiasenvolvidos para se adotar um modelo de gestão, treinar pes­ A Gerência de Configuração de Software (GCS) ou Softwaresoal, adquirir ferramentas que apóiem a pratica de GCS, e Configuration Management (SCM) é uma atividade abrangenteainda obter certificação em um determinado nível de modelo que ocorre ao longo de todo o ciclo de vida de um software ede maturidade, de uma entidade reconhecida, pode levar que gerencia e controla sua evolução, através do controle deuma 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 aoperder em competitividade para outras empresas. Este artigo histórico destas modificações, fornecendo-lhes subsídios parafoi 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 modelosde 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 softwareestudo de caso de uma empresa fictícia de pequeno porte foi entregue ao cliente, a GCS é um conjunto de atividades deque atenda as exigências do modelo de maturidade MPS, e acompanhamento e controle que começam quando o projetoque possa servir como alternativa para empresas reais que de engenharia de software tem início e só terminam quando oestejam 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ãoque 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 dee origens destas modificações podem ser os mais variados configuração de software define uma série de tarefas que têmpossí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 mecanismodevemos conhecer alguns conceitos que são fundamentais para compartilhar a informação entre vários desenvolvedores epara 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 asConfiguraçã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 dadoscesso 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 emmentos 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 especificoou 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 é omenor 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 processode engenharia de software, ou que para este processo sejanecessá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çãoICS´s gerados no processo de engenharia de software, tambémpoderã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 dorelacionados a outros ICS’s e sua evolução é passível de ras­ produto e permitindo aos desenvolvedores voltar a versõestreamento. O controle da Gerência de Configuração será feito anteriores. Precisa ser capaz de controlar variados tipos desobre estes itens e serão mantidas todas as informações a seu ICS’s incluindo textos, gráficos, mapas de bits e outros maisrespeito. 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 sobreceito 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 definidasdeste item estão para as “instâncias” da classe em questão em um metamodelo que determina como as informações sãoconforme 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 suaRepositó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óriositório é o conjunto de mecanismos e estruturas que per­ deve ser capaz de armazená-los fisicamente em um esquemamite 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-basedas 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 integralmentede 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 adaptadano 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ânciadentro da Gerência de Configuração de Software. Sem umaidentificação correta de um item, é impossível gerenciar esteprocesso. Cada ICS deve ser identificado através de características Figura 2. Entendendo um baselinedistintas que o caracterizam unicamente. Estas característicaspodem 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õesidentificação. combina procedimentos e ferramentas para gerir diferentes versões de objetos de configuração que são criados duranteBaseline 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 guardauma 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 asmarco 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 depara 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 conjuntobem 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, outrosformal de alterações. A este conjunto é dado o nome de base­ dizem que o sistema de controle de versões rastreia e controlalines, 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 quegem do conceito está em se fazer coincidir o estabelecimento de cada um pensa sobre controle de versões, algumas das suasbaselines 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 cadaresumido nos seguintes pontos: item do projeto;• Caracterização do ciclo de vida, identificando-se as fases • Possui mecanismos para gerenciar diferentes ramos depelas 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 cadavida do software; item do projeto. Edição 24 - Engenharia de Software Magazine 17
    • O sistema de controle de versões é o responsável por manteras diversas versões dos ICS’s e faz isso através de um esquemade arquivos e diretórios presentes no repositório, registrandonão só as alterações realizadas em cada arquivo mas tambémna 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 doprojeto em um determinado instante de tempo. Em empresas de grande porte, onde existem vários profissio­ Figura 3. Branch de desenvolvimentonais trabalhando concorrentemente nos mesmos arquivos, faz-senecessário uma política para ordenar e integrar estas alterações, Mergea 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 conceitoassegurando que os desenvolvedores não trabalhem diretamen­ de merge é também uma parte fundamental do controle dete 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 sendodestes arquivos em suas próprias máquinas. Isto permite que alterados simultaneamente por desenvolvedores diferentesum 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ãoo 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çãode 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 aoarquivo quando uma pessoa retira uma cópia para manutenção grande número de conflitos gerados entre as diferenças dase 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 causarproblemas administrativos e forçar a serialização do trabalho, Tagsentretanto, é a solução indicada para organizações que neces­ Um outro tipo de controle de versão são as tags. Tags sãositam 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 arquivosNesta política, cada desenvolvedor trabalha de forma indepen­ usados para denominar um projeto ou uma nova versão, e quedente em sua cópia de trabalho, e ao final, as alterações são rotulam estes arquivos. As tags nas versões de um conjuntomescladas no repositório, formando a versão final. Esta política de itens de configuração, existente em diversos sistemas depode parecer caótica, mas na prática funciona bem, devido ao controle de versões, pode ser utilizado para implementar obaixo í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çãoBranch 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 pelosem 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 aque 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 procedimentostécnica de branching ao longo do tempo. humanos e também o uso de ferramentas automatizadas, e18 Engenharia de Software Magazine - Gerência de Configuração
    • Projetoseu 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 ICSdado, em um item de configuração, são guardadas para que que foi modificado a partir de uma requisição. Revisoresseja 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 objetivoanálise de uma Comissão de Controle de Modificações (do complementar a revisão técnica formal e trata dos seguintesinglê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 ecaçã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 avaliaruma á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 deno repositório com os mecanismos adequados de controle rastreabilidade tais como data da modificação, autor, nº dede 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 relatarpessoas 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 decaçõ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 à GCSAuditoria 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 popularidademo que nos garanta que as modificações foram feitas de forma variam bastante. As ferramentas comerciais apresentamadequada. 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 Standalonesentam vantagens como qualidade e segurança. A Tabela 1 Software Configuration Manager (SSCM) tendo uma forteapresenta 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 umControle 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 seusControle 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 nestasCVS 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 arquivosConcorrentes), é 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émorganizados 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 guardadasquando 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, independentede 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 podemtes 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 Mantisuma 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 linguagemdo 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 incluindoApache Software Foundation, KDE, Free Pascal, FreeBSD, GCC BugzzilaPython, 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, rastreandocó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 deEm 2007, a Forrest Research reportou que o Subversion foi software livre, é mantido por voluntários, sendo utilizado20 Engenharia de Software Magazine - Gerência de Configuração
    • Projetopor 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 emusuá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.98SCons 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 esource 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 relacionadospiladores 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 umbaseadas 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 notarsolucionar problemas que afetavam a industria de software. na figura que a Gestão de Configuração de Software é umaProblemas 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ãooutros, afetavam de maneira drástica a qualidade dos produtos de Configuração de software (GCS) é estabelecer e manter ade 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çãotruçã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çãová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çãovoltados para o desenvolvimento de software objetivando SP 1.2 Estabelecer um Sistema de Gestão de Configuraçãoaumentar a produtividade da construção e a sua qualidade, SP 1.3 Criar ou liberar baselinestodos incluem a utilização de práticas de GCS que variam de SG 2. Rastrear e controlar mudançasacordo 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çãocação da GCS nos modelos CMMI, e MPS.BR. SG 3. Estabelecer integridade SP 3.1 Estabelecer registros de Gerencia da ConfiguraçãoGCS aplicada no CMMI SP 3.2 Realizar auditorias de configuração O CMMI (Capability Maturity Model Integration) tem comoobjetivo prover um modelo de maturidade para desenvolvi­ GCS aplicada no MPSmento de produtos e serviços de uma maneira geral. Ele aponta O programa MPS.BR (Melhoria de Processo do Softwarepráticas que cobrem o ciclo de vida dos produtos desde a sua Brasileiro) foi criado em 2003 pela SOFTEX (Associação paraconcepção até a entrega e manutenção. A versão 1.0 foi publi­ Promoção da Excelência do Software Brasileiro). O MPS.BRcado 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 processoInteramericano 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 serpara: 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 sua22 Engenharia de Software Magazine - Gerência de Configuração
    • Projetocapacidade. Para cada nível de maturidade são estabelecidos software utilizando-se das ferramentas Mantis para controle deprocessos 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 setení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 – GPPFigura 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 – GRETabela 2 mostra os processos exigidos para cada nível de Gerência de Projetos – GPRmaturidade. 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 Subversiontrabalho de um processo ou projeto e disponibilizá-los a todos A partir de agora será apresentado um estudo de caso deos envolvidos. A GCS é encarada pelo MPS.BR como sendo implementação de práticas de GCS com as ferramentas Mantisum processo do nível de maturidade “F” e portanto deve ter e Subversion em uma empresa de construção de software deresultados 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árioem 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 desenvolveformal 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 sobcontroladas; 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 clientesde 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 asvamente 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 deguraçã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 depróxima seção do artigo será apresentado um estudo de caso software. Como a empresa está em franca expansão, fica clarade 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 diversoscolaboradores envolvidos no processo de implementação detais práticas e também aqueles que irão fazer uso dela possamcompreender o novo processo e utilizá-lo conforme definidono Plano de Gerência de Configuração. Como projeto piloto, foi selecionado o SISVEN (Sistema deVendas). O SISVEN é um sistema feito em Java destinado atirar pedidos de vendas, fazer prospecção de clientes e rodaem notebooks utilizados por vendedores que visitam clientesem todo o país.Plano para implementação da GCS na empresa Devido ao tamanho da empresa e da pouca experiência dopessoal envolvido, será implantada a GCS sob a perspectivade desenvolvimento, a qual abrange os sistemas de Controle Figura 7. Fluxo do Plano de Implementação da GCS na empresade Modificações, Controle de Versões e Gerenciamento daConstruçã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 Autorpara o “Controle de modificações”, e Subversion para o “Con­ 05/07/2009 1.0 Criação da primeira versão Alberto Bollertrole de Versões”. O “Gerenciamento de construção” feito porum sistema automatizado não será tratado neste trabalho. NaFigura 7 podemos ver o fluxo do Plano para implementação daGCS 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á compostapor um gerente de configuração, um gerente de projetos e por Data Versão Nome Cargouma 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õesresponsabilidade do CCC será avaliar se uma determinada Aprovaçõesmodificação deve ser implementada, rejeitada ou posterga­da, baseando-se em análises de impacto que tal modificação Identificação dos ICS’sirá causar. Os itens de configuração, os níveis de controle exigidos e os identificadores para cada um encontram-se descritos naCriaçã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çãoos 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á seguirseguir 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 paraCasos de uso UC Versão e mudança armazenamento do sistema SISVEN pode ser visto naDiagrama de Classes DC Versão e Mudança Figura 8.Documento de Requisitos DR Versão e MudançaPlano de Testes PTES Versão e MudançaPlano de Gerencia de Configuração - Versão e MudançaCódigo Fonte - Versão e MudançaRelease - Versão e MudançaTabela 5. Itens de ConfiguraçãoRegras para versionamento As regras de versionamento serão aplicadas apenas nasidentificações de tags e branches, uma vez que o Subver­sion controla as versões de itens de configuração a cadaoperação de commit. O padrão de versionamento utilizará a regra descrita aseguir: <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çãoidentificada 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 cujaDOC-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çãoRELEASE-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 GCSIdentificaçã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 quebuí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 formaque 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 MantisFigura 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 Mantistrata o controle de uma solicitação de modificações. NaFigura 10 observamos que existe um controle de acessoàs solicitações a nível de tipo de usuário que pode ser umrelator, desenvolvedor, gerente administrador etc, cada qualcom 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 emdetalhes todos os tramites pelos quais passou uma solicitaçãode 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 oSubversion. A escolha desta ferramenta também está baseadano 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çõeso Eclipse. O Subversion possui uma parte server que roda em gerais)um servidor e que fica responsável por fazer as operações decheck-in, check-out, controle de lock, merge, controle de acesso Na Figura 15 é apresentado um fluxo básico de utilizaçãoe 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çõessolicitar à 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 fazeresta 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 fim26 Engenharia de Software Magazine - Gerência de Configuração
    • Projetode poder fazer as modificações necessárias utilizando-se daoperação de check-out. A Figura 18 mostra que novos itens deconfiguraçã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 deupdate para atualizar a cópia local do repositório. As Figuras 20à 22 mostram uma atualização da mainline através de umaoperação de commit. Vale observar neste ultimo caso que estaoperação é controlada com autenticação de usuário e senha.Por fim, a Figura 23 mostra um log com todas as operaçõesexecutadas neste repositório ao longo do tempo. Através das figuras vistas pode-se concluir que o Subversion Figura 16. Fazendo check-outcontrola de forma adequada o armazenamento e manuseio deICS’s, fornecendo dados para sua auditoria. Figura 17. Resultado da operação de check-outFigura 13. Visão detalhada de uma solicitação de mudanças (Anotações) Figura 18. Adicionando novos programas ao repositório localFigura 14. Visão detalhada de uma solicitação de mudança (Históricodo 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 podeFigura 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 doprocesso 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 otrabalho onde estão contemplados. diretório é “<diretório_de_instalação_do_XAMPP> php28 Engenharia de Software Magazine - Gerência de Configuração
    • Projeto Resultado esperado SeçãoGCO 1. Um Sistema de Gerência de Configuração é estabelecido e mantido Estabelecimento de um sistema de GCSGCO 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 BranchesGCO 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 GCSGCO 4. A situação dos itens de configuração e das baselines é registrada ao longo do tempo e Gerenciamento de Baselinesdisponibilizada; Estabelecimento de um sistema de GCSGCO 5. Modificações em itens de configuração são controladas; Estabelecimento de um sistema de GCSGCO 6. O armazenamento, o manuseio e a liberação de itens de configuração e baselines são Estabelecimento de um sistema de GCScontroladosGCO 7. Auditorias de configuração são realizadas objetivamente para assegurar que as baselines e os Estabelecimento de um sistema de GCSitens de configuração estejam íntegros, completos e consistentesTabela 6. Resultados esperados no nível F do MPS.BRPEAR”. A instalação está descrita no arquivo “readme” quetraz também um exemplo simples.Instalação do Subversion A instalação do Subversion é mais simples do que a doMantis. 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 quejá estará instalado caso o XAMPP tenha sido instaladoprimeiro. Vale ressaltar que neste endereço existem doisarquivos de instalação que devem ser baixados:• CollabNet Subversion Server and Client v1.6.3 (forWindows)• CollabNet Subversion Command-Line Client v1.6.3 (forWindows) 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 etem integração direta com o Windows Explorer. O arquivopara instalação do TortoiseSVN pode ser encontrado nosite “www.baixaki.com.br”. Não é necessário configuraçãoadicional no software para o seu funcionamento, porém,para cada repositório deverá ser configurado os perfis Figura 24. Arquivo config.inc.phpde acesso no arquivo “svnserve.conf”. Para detalhes deintegração do Subversion com o Mantis, consulte o site terminologias e algumas ferramentas voltadas para darhttp://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 deGerencia 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 sramentas Mantis e Subversion para o controle de solicitação Dê A Engenharia de Software Magazine tem que ser feita ao seu gosto. sobre ede 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 daa 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 2processos 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 discutidasalgumas questões relacionadas à medição de software e são Medição de Software nas Organizaçõesapresentadas 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 paraorganizaçõ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 serrealizar a medição”, e sim discutir questões relacionadas a esse orientada para apoiar a tomada de decisão nos âmbitos técnicocontexto. 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 programautilização da medição de software nas organizações é discu­ de medição e as organizações que simplesmente despendemtida 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, englobandoConceito 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ãoquer aspecto dos processos e produtos da Engenharia de que impactam no desempenho técnico e de negócio, sendo essaSoftware, que permite seu melhor entendimento e, com isso, informação disponibilizada para os tomadores de decisão emauxilia 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 maisdas, as quais caracterizam, em termos quantitativos, alguma eficiente, traçar os objetivos específicos dos projetos, identificarpropriedade 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, assimtware é prover informação quantitativa para apoiar a tomada como qualquer outra ferramenta gerencial ou técnica, a mediçãode 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 quedecisõ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 que70, 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 projetorelacionadas à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 asnas organizações não eram explícitos ou, se eram, não eram diferenças entre o seu desempenho e o desempenho exigidocompreensíveis aos seus membros, resultando em medições pelo mercado, permitindo que ela otimize seus processosinúteis não alinhadas às necessidades das organizações ou dos técnicos e de negócio, quando necessário. Isso é possível, poisprojetos. Nos anos 90, impulsionados por algumas aplicações as medidas coletadas nos projetos da organização podem serbem 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 ostemas mais importantes na Engenharia de Software quando se projetos, comparar o desempenho dos projetos correntes comfala em melhoria de processos. Enquanto, no passado, muitas seus planos, orientar os investimentos e decisões de melhoriaorganizações de software não reconheciam a importância das de processos e auxiliar a prever se os projetos em andamentoatividades de medição e as tratavam apenas como “mais uma irão alcançar os objetivos inicialmente estabelecidos. Essas sãocoisa a ser feita”, hoje ela é considerada uma prática básica da ações comuns em organizações de software maduras, ondeEngenharia de Software, sendo evidenciada por sua inclusão há utilização da medição em todo o ciclo de vida do software32 Engenharia de Software Magazine - Medição de Software
    • processoe as informações obtidas são consideradas e utilizadas como que identifica as atividades do processo de medição que sãorecurso 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 oscoletados 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 processoda medição é alcançado e percebido pelas organizações, fator de medição definido na ISO/IEC 15939 consiste de quatroque 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), comumentecorretamente 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) executarfiniçã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 umque levam à melhoria dos processos. Para isso, inicialmente a produto de informação, a fim de satisfazer a necessidade demedição é utilizada para identificar as necessidades de mudanças. informação identificada. Para isso, o processo considera umPosteriormente, 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çãopalavras, a melhoria de processos é um ciclo contínuo no qual a identificadas. A Figura 1 apresenta o Modelo de Informaçãomediçã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 quetratam a medição de software e apóiam a definição doprocesso de medição, bem como sua execução. Algumasdessas abordagens propõem processos para a realizaçãoda medição, outras definem modelos de informação queestabelecem a estrutura de informação considerada pelamedição e outras incluem propostas tanto para o processode 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 emuma organização. Um processo de medição eficiente é fatorcrítico ao sucesso da medição na organização, pois é ele quedireciona as atividades a serem realizadas para que, comos resultados da análise dos dados coletados, seja possívela identificação de tendências e antecipação aos problemas,a fim de prover melhor controle dos custos, redução dosriscos, melhoria da qualidade e, consequentemente, alcancedos 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çasentre 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ãoresultados 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 compormediçã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 representasurement Process A norma ISO/IEC 15939 define uma das abordagens maisconhecidas 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 maisma, 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; ede software para estabelecer requisitos de qualidade e iden­ (v) validar as medidas.tificar, implementar, analisar e validar medidas de qualidade • Practical Software Measurement – PSMde 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 aderentelidade 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 delidade 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 asde 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 dePara cada fator de qualidade é identificada uma medida para informação representa a evolução de uma necessidade derepresentá-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-1998Figura 3. Modelo de Informação de Medição34 Engenharia de Software Magazine - Medição de Software
    • processomedição para estabelecer exatamente que medidas de que alcance dos objetivos organizacionais. Uma das abordagensatributos 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. Ade 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 esidades 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 maispresente 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 dospresentes no Modelo de Informação da ISO/IEC 15939 (de­ objetivos são transformadas em indicadores. Os indicadoresmais 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 capazespropõ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 decomprometimento. 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 umque elas são responsáveis pela identificação e definição das processo de medição, o foco da análise muda de acordo commedidas, 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ícioserã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 doem organizações de software. Para que as atividades de me­ Projeto está próximo de ser concluído, para determinar sediçã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 durantese os objetivos de negócio serão ou não alcançados. Consi­ a execução do projeto para determinar se ele está indo aoderando essa questão, há algumas abordagens que apóiam a encontro dos planos e metas definidos. A Figura 5 ilustraidentificaçã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ênciasFigura 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 yoursua 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 planosestabelecidos, indicando os riscos envolvidos e fornecendo CHRISSIS, M. B., KONRAD, M., SHRUM, S., 2006, CMMI (Second Edition): Guidelines for Processdiretrizes 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 Advancedseu 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 Electrotechnicalinformações, através da análise dos valores das medidas Commission, Geneva, Switzerland.coletadas ao longo do projeto, e relacionamento destas comos 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 sejamcapazes de atender às demandas de qualidade e produti­ NIESSINK, F., VLIET, H., 2001, Measurement Program Success Factors Revisited, Information andvidade 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 Proceedingsque 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
    • processoEdiçã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 incorporar38 Engenharia de Software Magazine - A Comunicação no Processo de Software
    • processomudanças: seja porque o usuário decidiu realizar seu processo confirmação de recebimento, é Griffin (2006) quem destaca a etapade maneira diferente, seja porque houve alguma alteração de de feedback no processo de comunicação. Trata-se de um retornoleis ou normativas municipais, estaduais ou mesmo federais com relação ao recebimento da mensagem: é a certeza de que oque 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 pelasrem o alicerce para as fases subsequentes de desenvolvimento. O características das pessoas envolvidas. De acordo com Chiavenatolevantamento de requisitos, de acordo com Sommerville (2007), (1994), a comunicação é uma troca composta por palavras, letrasreflete 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 ambientefortemente 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), alevantamento de requisitos é uma atividade com comunicação comunicação tem o propósito de coordenar e orientar as metasintensiva. 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. Essaentre usuário e analista pode acarretar muitas dificuldades para troca permite o entendimento do que deve ser feito e como. Griffino 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 umacomunicação a fim de buscar maneiras de minimizar as barrei­ coleção de fatos e números. Os funcionários, como acontece emras 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 ogens 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 diferenteto adequado. Em função de cada indivíduo ter características daquela enviada pelo emissor. Essa transformação é provocadaintrí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 recebimentoaltura; para outros, significa “estar numa boa”. – provoca omissão e contribui para a distorção. O processo de comunicação é composto por cinco etapas, deacordo 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 daa 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 processomensagem 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áriosagem é 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 qualProcesso de Comunicação: o ruído. O ruído é uma interferên­ sintonizado nos seus conhecimentos técnicos. Não vai havercia, 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 é umde 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 deanalista 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 garantirO 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 daso 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 vidaclá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ãoFigura 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óprioque essas etapas se sobrepõem e trocam informações entre si. analista de sistemas. Se, de um lado, o usuário afirma: “NãoPressman (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 comunsrestrições operacionais do sistema (deve definir exatamente observados no relacionamento entre desenvolvedores deo que será implementado); sistemas e usuários. Como os desenvolvedores vêem os usuários Como os usuários vêem os desenvolvedoresOs 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 podeuma 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 entregacom Maturana (2001), “sem a aceitação do outro na convivência, são as principais premissas para um sistema, o ciclo de vidanão há fenômeno social”. O usuário não pode ser um problema clássico talvez não seja a metodologia mais adequada, sendopara 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 enhecidos 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 estudarema técnica mais comum de levantamento de requisitos de siste­ métodos mais leves e rápidos. Mas foi em 2001 que algunsmas, 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 modosmuladas pelo analista de sistemas, derivando os requisitos de desenvolvimento de software, baseados em indivíduos edas respostas dadas pelos usuários a essas questões. Essas suas interações, softwares funcionais, colaboração do clienteentrevistas podem ser fechadas, respondendo os usuários e resposta a modificações.a perguntas predefinidas; ou abertas, que não seguem umroteiro. As entrevistas abertas permitem uma compreensão Desenvolvimento rápido de software, uma possívelmaior 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 principalmentede 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 praticamentepara organizar essas informações de forma estruturada. Além todas as fases do processo, garantindo assim que possíveisdisso, 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 analistaenvolvidos. Isso exige, em muitos casos, a utilização de técnicas interagem, mas várias. Nesse contexto os usuários podemadicionais 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çãoUso. A técnica de Cenários caracteriza-se por uma descrição entre usuários e desenvolvedores em detrimento do fortede exemplos de interação do mundo real que o sistema deve planejamento proposto pelo ciclo de vida clássico do processoatender. 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ísticatornar 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 desenvolvimentoo 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 incrementadousuá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 prazote da etapa de levantamento de requisitos, é importante que mais curto, de acordo com as necessidades do usuário. Umeste mapeamento seja bem construído. Dentre as vantagens da envolvimento maior entre usuário e analista de sistemas podeutilização do modelo de desenvolvimento de software baseado gerar maior compreensão acerca dos requisitos do sistema eno 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 produtodificuldade de reagir às mudanças inerentes do projeto. De­ que atende às necessidades do usuário e que proporcioneterminadas 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 grandede teste, o que obriga o retorno às fases iniciais de análise e trunfo dos métodos ágeis se dá pelo envolvimento do usuáriolevantamento 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 queo usuário não garante a superação das barreiras de comuni­ permite que tanto o usuário quanto o analista de sistemascaçã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çãoespecificado, corre-se o risco de não ter um sistema pronto num processo de software, mas podem servir como base nanunca, 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 fazrequisitos 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áriosde vida clássico. A agilidade não abstrai disciplina e processo pode significar aumentar as barreiras de comunicação, casono 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 clarezado 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 deutilizado no processo de software vai depender do tipo de desenvolvimento de software adotado.sistema a ser desenvolvido. Os métodos ágeis são perfeitospara pequenos sistemas ou pequenas adaptações e integrações Dê seu feedback sobre esta edição! Feedbackentre 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 edetalhadas 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 papelde facilitador no processo de software, quando elenca algu­mas capacidades básicas que este deve possuir e que podem Referências Bibliográficasse resumir na habilidade de comunicar-se, de entender e se CHIAVENATO, Idalberto. Gerenciando pessoas: o passo decisivo para a administraçãofazer 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ãose 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 esuas 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 osindesejá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 talvez42 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 cinquentaforma, 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 seremchaves 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çãomento de projetos determinísticas, tais como estimativa de para a contingência em relação ao custo total), ou atividadescusto 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 pora 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 comda avaliação de riscos, responde à última pergunta, mas não cenários incertos ou resultados que tenham um impacto napode 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 alternativastodos os riscos do projeto em relação ao seu custo total, ou a disponíveis. A parte interessada utiliza os resultados parasua 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 nospais: (1) se os objetivos gerais do projeto estão suficientemente objetivos gerais do projeto [PMI 2004]. Então, na próximaem perigo para justificar o tratamento dos riscos, e (2) sobre seção serão discutidas as principais técnicas utilizadas noriscos importantes antes das suas ocorrências, o que lhes per­ tratamento dos riscos.mite desenvolver ações de mitigação de risco ou captura deoportunidades para tornar o projeto melhor. Uma dificuldade As Técnicasna 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 ounecessá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 demais amadurecidas, e os dados mais conhecidos, a flexibili­ dados históricas ou são estimativas de esforço. No últimodade e o poder de afetar o projeto com alternativas tornam-se caso, contêm um nível de incerteza devido ao possível usorestritos, 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 parade 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áliseentradas 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 devalores possíveis do elemento custo ou do prazo, desenvolvida Entrevistasatravés de entrevistas intensivas e análise de desempenhos As entrevistas são realizadas, conforme Newton Nóbregapassados. A entrada típica é resultado do uso da estimativa [Nóbrega 2007], de maneira análoga àquelas que compõemde 3-pontos, no qual o custo ou a duração é representado pelo os métodos de identificação de riscos, tendo como principalvalor 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á nadistribuições mais comumente usadas são a: triangular, beta, quantificação dos riscos, as entrevistas são realizadas com ouniforme, 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 acusto ou prazo [Hulett 2004; Matias Júnior 2006]. A simulação informação necessária vai depender do tipo de distribuição44 Engenharia de Software Magazine - Análise Quantitativa de Riscos e suas Técnicas
    • Planejamentode 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 emximo 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álisetriangular, 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 pararepresentam as probabilidades e as consequências do compo­ cobrir o impacto dos riscos, caso algum destes aconteça. Johnnente 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 importanteda entrevista sobre riscos, uma vez que pode gerar estratégias Probabilidade de Impacto em termos de Reserva de Contingência Riscoeficazes de respostas aos riscos. Ocorrência (Pr) custo (Ic) para o Risco A 80% R$ 10.000,00 R$ 8.000,00Aná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,00tomada de decisão que avalia a mudança de uma variável D 10% R$ 40.000,00 R$ 4.000,00dentro do projeto, analisando o resultado dessa variação sobre E 30% R$ 20.000,00 R$ 6.000,00o seu planejamento inicial, e é de grande importância para a F 25% R$ 10.000,00 R$ 2.500,00análise de novos cenários [Silva e Belderrain 2004; Almeida eFerreira 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ãocom que a incerteza de cada elemento do projeto afeta o Supondo a identificação de seis riscos no projeto, o impactoobjetivo 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 reservade base, impactando em prazos e custos [PMI 2004; Almeida de contingência, pois este nível de reserva seria consideradoe Ferreira 2008]. Desta forma, a aplicabilidade da análise de para o caso de todos os riscos ocorrerem. Por isso, a reserva desensibilidade é caracterizada tanto na gestão de prazos quanto contingência é respeitada avaliando o potencial do impacto dosno 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), podendode decisão e concentrar-se nos elementos críticos durante a ser adicionada ao orçamento do projeto como uma poupançasua implantação. Por outro lado, o principal obstáculo é a não referente aos riscos. Se o risco “C” e o “F” ocorrerem, parteindicação da possível ocorrência de variação dos parâmetros dessa reserva poderá ser usada para cobrir o impacto. Porém, aescolhidos 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 deAná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ésos 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, fazem 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 umaalto, 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 quebá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çãoutilizam 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; Almeidavalor bem perto de impactar o projeto. Quanto ao elemento e Ferreira 2008]. Essa técnica é estudada em vários camposimpacto (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íveismédicos até avaliação de riscos na área financeira. ao extremo de cada nó. Segundo Raphael D’Castro [D’Castro 2009], como técnicade computação inteligente e apresentando resultados extra­ Na construção de uma árvore de decisão, considerando osordinários na tarefa de classificação, a análise da árvore de principais elementos defendidos por David Hillson, é plausíveldecisã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 dedecisã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 deque os ramos originados do nó de decisão mostram as diferen­ cada caminho lógico alternativo, obtendo o valor esperado detes alternativas para uma decisão particular [Ragsdale 2001], cada escolha (sempre ponderando as consequências quando asconforme 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étodoFigura 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, odecisor 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 processoaos quais uma decisão pode levar. Essas folhas terminais são de Análise Quantitativa de Riscos, sendo recomendado para arepresentadas, normalmente, por traços verticais, indicando análise de riscos de cronograma e de custos [Galvão 2005]. Seuponto 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 parade decisão baseia-se em quatro elementos fundamentais: esco­ as durações das atividades [Lima et al. 2008]. Desta forma, alha, 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 é utilizadoobjetivos, sendo que essas escolhas definem os nós de decisão o Método de Diagrama de Precedência (PDM) e, na análise deda á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 projetoe 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, ondede 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 ese 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 cidadeconsiderando 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 cujo46 Engenharia de Software Magazine - Análise Quantitativa de Riscos e suas Técnicas
    • Planejamentofuncionamento possuir certa similaridade com o processo Conclusãode 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 pelospermite 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óricosestabelecidas em termos probabilísticos [Smith 1973]. Então, essa de projetos, quando guardados. Como ponto relevanteté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 dosde 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 aplicadaao 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 prazoscamente por uma função f, chamada função densidade de pro­ [Almeida e Ferreira 2008]. De qualquer sorte, a análisebabilidade, cujo gráfico mostra as possibilidades de ocorrência de sensibilidade avalia, independentemente, a mudançados 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. Destasã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 suaprojeto. 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 conseguegular 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 considerapara a escolha das distribuições, elas são selecionadas arbitra­ todos os possíveis resultados, evitando assim, a simplesriamente [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 melhoresbuiçã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 reservaprincipais 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 dasde 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 DesvantagemEntrevistas 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ógicaassume 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 pelainformação necessária de treino. Como obstáculo, oferece execução e análise do método.dificuldades na apresentação dos resultados quando aspossibilidades 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çãopresumíveis, sem que exista a necessidade de executar o www.devmedia.com.br/esmag/feedbackprojeto. 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 deatividade 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). Dadosqualidade desta atividade. A automação simplesmente torna de entrada são fornecidos, o teste é executado e o resultadoautomática algumas tarefas do processo de testes, mas ela não obtido é comparado a um resultado esperado previamentefaz milagres. Como assim? Uma ferramenta de testes apenas conhecido. Haverá sucesso no teste se o resultado obtido forautomatiza o nosso conhecimento técnico sobre teste de sof­ igual ao resultado esperado. O componente de software atware. Sendo assim, se não tivermos conhecimento técnico ser testado pode ser um método, uma função interna, umadequado 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écnicaqualidade suficiente, de forma que a ferramenta irá apenas de teste funcional é aplicável a todos os níveis de teste, sejaautomatizar 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 trazergrandes 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 “Planejamentode Testes a partir de Casos de Uso” publicado na edição 6 da Um dos mecanismos para facilitar a realização de testesES Magazine utilizando uma ferramenta, Selenium IDE, para funcionais é pensar na automação de algumas tarefas queautomaçã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 Testesestraté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 dosvista de recursos necessários para a sua realização, e bastante testes e outras atividades do controle dos testes e relato de seuscomplexa 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 processocificaçã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 enesse caso é mais complicada, caso não se tenha um formalis­ consome muito tempo. Além disso, ela pode não ser tão efetivamo 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 foramportamento 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 casoscompletamente dependente da facilidade para a construção do de teste a serem executados. Este representa, na maioria dosmodelo 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 longotagens e desvantagens. Não é propósito deste artigo discutir de sua vida podem fazer com que outras partes do software quequal 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 dee procedimentos (roteiros) de teste, seguindo uma estratégia argumentos de entrada para validar se os resultados que estãode 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, ousimplesmente GUI): um framework de teste gera eventos de Nota do DevManinterface do usuário tais como digitação de teclas ou cliquesdo mouse, e observa as mudanças que ocorrem na interface do Teste Baseado em Modelosusuário. Assim, podemos validar se o comportamento obser­ Teste Baseado em Modelos (TBM) consiste em uma estratégia de teste na qualvado 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ésDevMan), que adota modelos representando o sistema para de modelos com regras bem definidas (ex: métodos formais, máquinas de estadogeraçã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 enecessá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ériospe de teste deve tomar. Selecionar as funcionalidades corretas de seleção dos testes (algoritmos para geração dos casos de teste) e uma discussãodo 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 funcionalidadesinstáveis ou funcionalidades que estão sofrendo alteraçõesconstantes 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 seremImportâ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 podemde software, assim como a atividade de desenvolvimento de ser repetidos sempre que a equipe de teste julgar necessáriosoftware 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 conjuntoshumano” é 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 gerarem 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 deou tipos de dados inválidos; teste que iremos seguir neste artigo: teste de interface.• Não perceber um comportamento incorreto do software aum 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 vantagempoderia 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 estivessefalhas humanas, a automação dos testes pode ainda nos sendo submetido ao software que está sendo testado. Os casos deproporcionar: 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 aprojeto 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 representaprojeto; 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 poderados de forma automática e sempre seguindo um mesmo requerer que os testes tenham que ser regravados. A abordagempadrã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ãosua 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 URLHP 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.htmlRational 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.htmlTestComplete AutomatedQA http://www.automatedqa.com/products/testcomplete/TestPartner Micro Focus http://www.microfocus.com/products/TestPartner/index.aspWatir 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ério52 Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
    • Validação, Verificação & Teste Campo Categoria Valor Resultado Esperadopara 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 2na 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 ferramentaFigura 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 02Nome Teste Inválido Em branco Mensagem de erro:“Nome Inválido.” 01 Teste Válido 14005039731 Dados válidos, verifica os demais campos 02CPF Teste Inválido 14005039710 Mensagem de erro:“CPF Inválido.” 01 Masculino Masculino Dados válidos, verifica os demais campos 02Sexo Feminino Feminino Dados válidos, verifica os demais campos 01 Teste Válido 13/09/1982 Dados válidos, verifica os demais campos 02Data 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 02Telefone Residencial Teste Inválido Em branco Mensagem de erro:“Telefone residencial inválido.” 01Telefone Celular Teste Válido 92 8181-8181 Dados válidos, verifica os demais campos 01 e 02Telefone 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 02E-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 02Senha 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 02Confirme 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 02Como 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 02Deseja receber e-mail de ofertas? NÃO NÃO Dados válidos, verifica os demais campos 01Descriçã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 02Endereç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 02Número Teste Inválido Em branco Mensagem de erro:“Número do endereço inválido.” 01Complemento 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 02CEP Teste Inválido 06543-232 Mensagem de erro:“CEP inválido.” 01 Teste Válido Alvorada Dados válidos, verifica os demais campos 02Bairro Teste Inválido Em branco Mensagem de erro:“Bairro inválido.” 01Tabela 3. Casos de Teste para o PASSO 2Selenium, que já deve estar instalada em seu Firefox. Ao abriresta ferramenta, será visualizada sua tela responsável pelagravação dos testes, na qual por padrão ela já está ativada paragravação, como pode ser visualizado no ícone com uma bolavermelha localizado no canto superior direito da tela. Em seguida, sem fazer nada em Selenium, devemos re­tornar à tela de cadastro de clientes e preencher seguindoprimeiramente o procedimento de teste referente ao passo1. O resultado disto em Selenium deve ser uma tela similarà tela apresentada na Figura 5. Neste momento, podemosinterromper a gravação dos testes. Para isso, basta clicar noícone citado anteriormente de forma que este não apareçacomo pressionado na tela. Com isso, temos o primeiro roteirode teste gravado em Selenium. A partir disso podemos salvá- Figura 5. Roteiro de Teste do PASSO 1lo ou até mesmo reproduzi-lo, repetindo os testes. Iremosfalar 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 SeleniumCEP 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 de54 Engenharia de Software Magazine - Automatizando Testes Funcionais em Aplicações Web
    • Validação, Verificação & Testeacordo com o procedimento de teste 01 (dados inválidos), é obter exatamente os resultados obtidos na primeiraconforme visualizado na Figura 6. Observe que ao final execução.do roteiro de testes foram adicionados comandos paraverificar se cada campo que recebeu um valor inválido Utilizando Selenium para Reprodução dosreportou 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 cadaSelenium e iniciar nova gravação) com os dados do proce­ passo, basta abrir o arquivo com o roteiro de teste quedimento de teste 02 (dados válidos), conforme a Figura 7. foi salvo durante a gravação, e então clicar no ícone comObserve que ao final do roteiro de testes foi adicionado um uma seta verde e três barras verdes à sua direita. Nestecomando para verificar se a tela resultante após esse proce­ momento, a ferramenta Selenium irá reproduzir todos osdimento foi a tela de cadastro com sucesso (Figura 4). Isso passos feitos no momento da gravação dos testes. Casofoi 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, apor 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 – DadosInvá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õesVá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 partirvos (devemos salvá-los a cada gravação), e a partir de então do uso da ferramenta Selenium. Tal mecanismo adotou apoderemos 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çãoexecuçã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çãoram, 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 CEPsentido a partir do bom conhecimento técnico sobre testes Referênciasde software pela equipe de testes, caso contrário há grande KOLAWA, A.; HUIZINGA, D. (2007).  Automated Defect Prevention: Best Practices in Softwarechance 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ãoconseguem 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 eaumento 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 IDEde testes JUnit. Depois disso, é demonstrado como os testes que Podemos então iniciar a construção dos testes funcionaisforam exportados podem ser executados através da ferramenta utilizando o Selenium IDE, um plug-in para o navegadorSelenium RC e, posteriormente, como executar esses testes em Firefox que permite gravar, editar, depurar e reproduzirum 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 navegadoruma 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 naAplicaçã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 quese possa entender os testes elaborados. Esta aplicação funciona através de um browser e recebe onome, frequência, nota 1, nota 2 e nota final do aluno comoparâmetros de entrada. Além desses parâmetros, o sistemapossui ainda um botão Calcular Aprovação, como pode servisto 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 nose o aluno foi ou não aprovado seguindo as seguintes regras: canto superior direito dessa janela se o botão que indicacaso a frequência do aluno for menor que 75, ele é reprovado. o status da gravação está pressionado. Caso este botãoCaso 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 cliqueas 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 oaluno é aprovado. É bastante importante observar que este tipo Campo Valorde resposta do sistema é que possibilita a execução dos testes Nome Joãofuncionais, pois através dessas mensagens é que os testes vão Frequência 74verificar 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ência58 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 30Aprovação. O sistema retornará a mensagem dizendo que oaluno foi reprovado. Nota Final 69 Neste momento, é preciso informar ao Selenium IDE o que Tabela 4. Reprovação por nota finalera esperado caso o valor 74 fosse digitado para a frequênciae todas as notas fossem preenchidas com zero. Neste caso, ob­ Campo Valorservando as regras descritas no início do artigo, o aluno seria Nome Joãoreprovado por infrequência. Logo, espera-se que o sistema emi­ Frequência 75ta uma mensagem informando que o aluno foi reprovado. Nota 1 30 Para passar esta informação ao Selenium IDE, selecione o Nota 2 30texto da mensagem, clique com o botão direito do mouse eescolha a opção verifyTextPresent, como mostra a Figura 5. Nota Final 70Em seguida, deve-se terminar a gravação do teste, clicando no Tabela 5. Aprovação por nota finalbotão do canto superior direito da ferramenta. Por fim, deve-segravar 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. ParaFigura 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 dedo servidor da aplicação. Neste exemplo, a URL inicial é http:// testes automatizado.localhost:8000/. Listagem 1. Arquivo pom.xmlCriando 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.0um 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 parao 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 ilustradautilizado o SVN. Como o uso de repositórios já é bastante na Figura 7 é exibida. Essa janela deve ser mantida semprecomum, 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ãoRC, 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, onium RC juntamente com o servidor de integração Hudson projeto será executado chamando o Maven2 e atribuindo ao60 Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC
    • Validação, Verificação e Testeparâmetro Goal o valor test, indicando que os testes do projeto endereço http://localhost:8080/hudson. A Figura 9 mostra adevem ser rodados. tela inicial do servidor de integração Hudson. Figura 9. Tela inicial do HudsonFigura 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 eInstalaçã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çãoexecução dos testes, vamos utilizar o Servidor de Integração Install automatically. Marcando essa opção, o HudsonHudson, que permite a execução dos testes funcionais de for­ se encarregará de baixar as bibliotecas necessárias parama automatizada e contínua. O Hudson será responsável por construção de projetos do tipo Maven2. É preciso tambémbaixar o projeto de testes direto do repositório SVN e executar incluir a instalação do JDK desmarcando sua opção Installos 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ívelpara 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á aoson.war para a pasta webapps e reiniciar o servidor para fazer Hudson o caminho que ele utilizará para baixar os arquivoso 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çãodos testes. Para isso, a opção Construir periodicamente emDisparadores de construção deve ser marcada. Na caixade texto deve ser inserido o seguinte valor: * * * 5. Essaconfiguração indica ao Hudson que esta tarefa deve serexecutada 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 detalhesas opções de agendamento. A próxima configuração a ser feita é indicar no campo POMRaiz o caminho para o arquivo pom.xml, que mantém asconfiguraçõ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 Outputcom o valor test. Esse parâmetro indica ao Hudson que deveexecutar 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 ambienteficações de email a cada construção executada com falhas. de testes funcionais automatizados utilizando ferramentasPara isso, a opção Notificação de e-mail deve ser marcada e Open Source. Esse ambiente foi construído com o servidordeve-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 queponto é possível construir uma tarefa manualmente clicando demanda tempo e consome muito recursos em um projeto. Masno 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çãoFigura 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 Linksconstruções já realizadas e também aquelas que estão emexecuçã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çãoda 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 Tomcattestes funcionais criados no Selenium IDE. Com isso, pode- http://tomcat.apache.org/se economizar bastante esforço da equipe de testes que nãoprecisará 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 queestá no repositório pode ser considerado mais confiável, Subversionpois 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/central64 Engenharia de Software Magazine - Testes funcionais automatizados com Hudson e Selenium RC