Este artigo discute a importância de realizar testes de segurança em aplicações web. Apresenta as falhas de segurança mais comuns na internet, como invasões de sites e vazamentos de dados. Também mostra extensões do Firefox e ferramentas que auxiliam nos testes de segurança, diminuindo a probabilidade de um software ser lançado com falhas críticas nessa área.
3. EDITORIAL
D
iversas metodologias de desenvolvimento de software voltadas para o con-
trole têm sido elaboradas uma vez que um projeto de software, ao longo do
seu ciclo de vida, tem uma grande quantidade de itens de informação tais
como documentos, código-fonte, dados, manuais e outros, produzidos e até modifi-
cados, pelos mais diversos motivos.
Para que a qualidade do software seja garantida, em função destas modificações, é
Ano 2 - 24ª Edição - 2010 Impresso no Brasil necessário que se faça uso da Gerência de Configuração de Software (GCS). A Gerên-
cia de Configuração de Software tem como objetivo gerenciar e controlar a evolução
de um software através do controle formal de versão e solicitação de mudanças. É
Corpo Editorial uma forma sistemática e organizada de controlar as modificações de um software
tornando possível manter sua integridade ao longo do tempo. A quantidade de itens
Colaboradores que podem estar sob controle da GCS e os níveis de controle exigidos sobre estes
Rodrigo Oliveira Spínola itens irá variar de empresa para empresa ou mesmo de projeto para projeto. Sendo
rodrigo@sqlmagazine.com.br assim, o uso desta prática em conformidade com modelos de maturidade mantidos
Marco Antônio Pereira Araújo por entidades que possuam credibilidade nacional e internacional, e também o uso
Eduardo Oliveira Spínola de ferramentas adequadas que garantam a qualidade deste processo, é fundamental
para que uma empresa obtenha êxito e reconhecimento.
Capa e Diagramação
Para empresas de grande porte, isto não chega a ser um grande problema pois
Romulo Araujo - romulo@devmedia.com.br
normalmente se dispõem de capital e pessoal qualificado para manter tais práticas.
Coordenação Geral Entretanto, quando voltamos a olhar para as pequenas empresas, o cenário é exata-
Daniella Costa - daniella@devmedia.com.br mente o oposto.
Neste contexto, a Engenharia de Software Magazine destaca nesta edição uma ma-
Revisor e Supervisor téria cujo objetivo é mostrar uma solução especifica, de boa qualidade e baixo custo,
Thiago Vincenzo - thiago.v.ciancio@devmedia.com.br
que atenda as exigências dos modelos de maturidade e que possa ser utilizada para
Na Web implementar a Gerência de Configuração de Software em pequenas empresas. Uma
www.devmedia.com.br/esmag leitura muito interessante.
Além desta matéria, esta edição traz mais seis artigos:
• Automatizando Testes Funcionais em Aplicações Web
Apoio
• Testes de segurança
• A Comunicação no Processo de Software
• Testes funcionais automatizados com Hudson e Selenium RC
• Medição de Software
• Análise Quantitativa de Riscos e suas Técnicas
Desejamos uma ótima leitura!
Equipe Editorial Engenharia de Software Magazine
Atendimento ao Leitor
A DevMedia conta com um departamento exclusivo para o atendimento ao leitor.
Se você tiver algum problema no recebimento do seu exemplar ou precisar de Rodrigo Oliveira Spínola
algum esclarecimento sobre assinaturas, exemplares anteriores, endereço de rodrigo@sqlmagazine.com.br
bancas de jornal, entre outros, entre em contato com: Doutorando em Engenharia de Sistemas e Computação (COPPE/UFRJ). Mestre em
Engenharia de Software (COPPE/UFRJ, 2004). Bacharel em Ciências da Computação
Cristiany Queiróz– Atendimento ao Leitor (UNIFACS, 2001). Colaborador da Kali Software (www.kalisoftware.com), tendo minis-
www.devmedia.com.br/mancad
(21) 2220-5338 trado cursos na área de Qualidade de Produtos e Processos de Software, Requisitos e
Kaline Dolabella Desenvolvimento Orientado a Objetos. Consultor para implementação do MPS.BR. Atua
Gerente de Marketing e Atendimento como Gerente de Projeto e Analista de Requisitos em projetos de consultoria na COPPE/
kalined@terra.com.br
(21) 2220-5338 UFRJ. É Colaborador da Engenharia de Software Magazine.
Marco Antônio Pereira Araújo - Editor
Publicidade
(maraujo@devmedia.com.br)
Para informações sobre veiculação de anúncio na revista ou no site entre em
Doutor e Mestre em Engenharia de Sistemas e Computação pela COPPE/UFRJ - Li-
contato com:
nha de Pesquisa em Engenharia de Software, Especialista em Métodos Estatísticos
Kaline Dolabella
publicidade@devmedia.com.br Computacionais e Bacharel em Matemática com Habilitação em Informática pela
UFJF, Professor e Coordenador do curso de Bacharelado em Sistemas de Informação
Fale com o Editor!
do Centro de Ensino Superior de Juiz de Fora, Professor do curso de Bacharelado em
É muito importante para a equipe saber o que você está achando da revista: que tipo de artigo
Sistemas de Informação da Faculdade Metodista Granbery, Professor e Diretor do Cur-
você gostaria de ler, que artigo você mais gostou e qual artigo você menos gostou. Fique a
so Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Fundação
vontade para entrar em contato com os editores e dar a sua sugestão!
Educacional D. André Arcoverde, Analista de Sistemas da Prefeitura de Juiz de Fora,
Se você estiver interessado em publicar um artigo na revista ou no site SQL Magazine,
Colaborador da Engenharia de Software Magazine.
entre em contato com os editores, informando o título e mini-resumo do tema que você
gostaria de publicar:
Eduardo Oliveira Spínola
(eduspinola@gmail.com)
Rodrigo Oliveira Spínola - Colaborador
É Colaborador das revistas Engenharia de Software Magazine, Java Magazine e SQL Ma-
editor@sqlmagazine.com.br
gazine. É bacharel em Ciências da Computação pela Universidade Salvador (UNIFACS)
onde atualmente cursa o mestrado em Sistemas e Computação na linha de Engenharia
de Software, sendo membro do GESA (Grupo de Engenharia de Software e Aplicações).
4. Caro Leitor
Caro Leitor,
Para esta edição, temos um conjunto de 4 vídeo aulas. Estas vídeo aulas estão disponíveis para download no Portal da En-
genharia de Software Magazine e certamente trarão uma significativa contribuição para seu aprendizado. A lista de aulas
publicadas pode ser vista abaixo:
Tipo: Validação,Verificação & Teste
Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte I -
Tipo: Validação,Verificação & Teste
Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte III -
Explorando Casos de Uso para apoiar Testes Projeto dos Testes a partir de Casos de Uso
Autor: Arilo Claudio Dias Neto Autor: Arilo Claudio Dias Neto
Mini-Resumo: Nesta vídeo-aula é apresentado como preparar um modelo de casos Mini-Resumo: Nesta vídeo-aula é apresentado com detalhes o último passo que
de uso e suas especificações para apoiar nas atividades de teste. São apresentadas as compõe o processo para apoiar no projeto de testes de software a partir de casos de
informações que devem compor a especificação de um caso de uso e em seguida um uso: a alocação de casos e procedimentos de teste. Para isso, é seguido um caso de uso
template de especificação de casos de uso. Ao final, é apresentado um processo para de exemplo (REALIZAR DEPÓSITO) e passamos por todas as etapas para construção dos
apoiar no projeto de testes de software a partir de casos de uso. testes.Neste momento utilizamos os critérios para geração dos testes (particionamento
por equivalência, análise do valor limite e grafo de causa-efeito) apresentados em
Tipo: Validação,Verificação & Teste aulas anteriores.
Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte II -
Projeto dos Testes a partir de Casos de Uso Tipo: Validação,Verificação & Teste
Autor: Arilo Claudio Dias Neto Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte IV – Exercício
Mini-Resumo: Nesta vídeo-aula é apresentado com detalhes o processo para Autor: Arilo Claudio Dias Neto
apoiar no projeto de testes de software a partir de casos de uso, citado na aula Mini-Resumo: Nesta vídeo-aula é apresentado um outro exemplo de construção de
anterior. Ele é formado por uma sequência de 4 passos que vão desde a identi- testes de software a partir de casos de uso (CADASTRAR FUNCIONÁRIO).Com isso,ficam
ficação dos atores de um modelo de casos de uso até a construção de casos e disponíveis 2 exemplos com características diferentes a fim de facilitar o aprendizado.
procedimentos de testes. Nesta vídeo-aula são apresentados apenas os 3 primeiros Ao final,são deixados pontos em aberto para que quem estiver acompanhando as aulas
passos deste processo. possa dar continuidade ao projeto dos testes, como um exercício.
ÍNDICE
Engenharia
06 - Testes de segurança
Eduardo Habib
14 - Gerência de Configuração
Alberto Boller Filho, Rodrigo Oliveira Spinola, Marcelo Nascimento Costa e Marcos Kalinowski
31 - Medição de Software
Monalessa Perini Barcellos
Agilidade
38 - A Comunicação no Processo de Software
Márcia Regina Simm Cantú
Planejamento e Gerência
43 - Análise Quantitativa de Riscos e suas Técnicas
Marcio Souza, Cristine Gusmão e Hermano Perrelli
Desenvolvimento
49 - Automatizando Testes Funcionais em Aplicações Web
Arilo Cláudio Dias Neto
57 - Testes funcionais automatizados com Hudson e Selenium RC
Fabrício Nogueira de Almeida, Victor Vidigal Ribeiro e Marco Antônio Pereira Araújo
4 Engenharia de Software Magazine
6. Engenharia
Nesta seção você encontra artigos voltados para testes, processo,
modelos, documentação, entre outros
Testes de segurança
Testes de segurança em aplicações web
De que se trata o artigo? Para que serve?
Neste artigo veremos a importância de se reali- A realização de testes de segurança em aplicações
zar testes de segurança em aplicações Web. Ao Web diminui a probabilidade de um software ser dis-
desenvolver uma aplicação web, deve-se pensar ponibilizado para o usuário final com falhas críticas de
na segurança dos dados durante toda a fase de segurança e que podem causar prejuízos ao usuário,
desenvolvimento. Isso minimiza as falhas de se- seja ele financeiro ou a liberação de dados sigilosos.
gurança que chegam ao usuário final. Esse artigo
tratará dos testes de segurança realizados pelo Em que situação o tema é útil?
testador após o software já estar desenvolvido. Testar a segurança de aplicações Web é importante
Será demonstrada a importância de se realizar em qualquer aplicação que contenha dados sigilosos
testes em aplicações web, as falhas de segu- e/ou onde ocorra, de alguma forma, transações finan-
rança mais comuns na Internet e, por fim, serão ceiras entre o cliente e o servidor, pois diminuem a
demonstradas extensões do Firefox e algumas probabilidade do software ser colocado em produção
ferramentas que auxiliam nos testes de aplica- com uma falha crítica de segurança e que pode vir a
Eduardo Habib ções web. ser explorada por alguma pessoa mal intencionada.
eduardohabib@gmail.com
Possui Graduação e mestrado em Ciência da
Computação na UFMG. Atua na área de testes
de software há nove anos. Nesses anos teve
experiência no planejamento, especificação
e execução de testes manuais, automação
de testes, testes de desempenho e testes de
A
segurança. Possui três anos de experiência le-
cionando no ensino superior. Freqüentemente
segurança dos softwares de focados nos pontos onde a segurança
ministra treinamentos e/ou palestras relacio- senvolvidos atualmente está tem uma probabilidade maior de ser
nados a testes de software já tendo, inclusive, se tornando um ponto cada vez comprometida.
ministrado a disciplina de Testes de Software mais importante a ser testado. Entretan Nesse artigo será demonstrada a im
na PUC Minas. Possui as certificações CQA - to, testar a segurança de um software portância de se realizar testes de segu
Certified Quality Assurance da IBM e CTFL do
BSTQB. Atualmente é Gerente de testes no
é algo muito complexo e custoso. Por rança em aplicações web. Serão apresen
SYNERGIA - DCC/UFMG. tanto, os testes de segurança devem ser tadas quais as falhas de segurança são
6 Engenharia de Software Magazine - Testes de segurança
7. Validação, Verificação & Teste
mais comuns em aplicações web e algumas ferramentas livres Gartner, em que se estima que os ataques contra os sistemas
que auxiliam nesses testes. do departamento de defesa dos EUA foram 60% maiores em
2009, se comparados com o ano anterior.
Testes de segurança Além do aumento do número de invasões que podem ser
No início da internet existiam apenas sites estáticos. Os visualizados na Figura 1, um estudo publicado pela Univer
sites existentes desempenhavam papel apenas de repositó sidade de Michigan, revelou que mais de 75% dos sites de
rios de informações que continham documentos estáticos, bancos, que são os que mais investem em segurança, não são
e os navegadores web foram criados como uma forma de inteiramente seguros como dizem ser e estão sujeitos a falhas
visualização desses documentos. A maioria dos sites não de segurança. Outro estudo, do instituto de pesquisa WhiteHat
autenticava usuários porque não havia necessidade já que Security, publicou dados demonstrando que cerca de 64% dos
a mesma informação era exibida para todos os usuários. Se 1364 sites de companhias avaliados possuíam pelo menos uma
um invasor comprometesse um servidor, ele normalmente falha de segurança crítica.
não ganhava acesso a nenhuma informação confidencial,
visto que toda a informação já estava liberada para o
público. No máximo, o invasor poderia escrever algum
conteúdo no site ou utilizar o servidor como repositório
de arquivos.
Hoje em dia a internet é completamente diferente. A
maioria dos web sites são aplicações complexas e possuem
um fluxo de informações nos dois sentidos (servidor e
navegador). Elas suportam login, transações financeiras e
acesso a dados pessoais. O conteúdo exibido para os usu
ários geralmente é gerado dinamicamente e muitas vezes
é específico para cada usuário. Muitos dos dados proces
sados, e exibidos, são pessoais. A segurança é, portanto,
uma grande questão: ninguém utilizará uma aplicação web
caso acredite que suas informações confidenciais serão
exibidas para terceiros.
Atualmente, para as aplicações web proverem as funcio Figura 1. Total de incidentes reportados ao CERT.br
nalidades mais básicas, muitas vezes é necessário acessar
sistemas internos da empresa e esses sistemas, muitas Isso é muito crítico para as empresas já que o aumento do
vezes, contêm dados sigilosos. Uma falha em uma dessas faturamento das empresas que comercializam produtos na
aplicações web pode comprometer todo o servidor. Um web está diretamente ligado à sua reputação. Poucas pessoas
invasor que conseguir comprometer a aplicação web pode gostariam de fazer negócio com um site inseguro e, devido a
roubar informações pessoais e com isso realizar ações isso, as organizações não costumam publicar detalhes sobre
maliciosas contra os outros usuários. a segurança de seus dados, ataques sofridos e vulnerabili
Tanto as empresas desenvolvedoras de software quanto dades, com o objetivo de não adquirir uma má reputação.
os usuários finais têm grande interesse na segurança das Por isso, os números podem ser ainda mais alarmantes do
aplicações: as empresas, devido à necessidade de aumentar que os publicados pelo CERT.br.
o faturamento com comércio na internet, os usuários por Dentre os diversos fatores que influenciam o aumento
que eles terão mais segurança para utilizar aplicativos. do número de incidentes de segurança, como a maior
popularização da internet pelo mundo e o surgimento de
Por que fazer testes de segurança? ferramentas que auxiliam nesses ataques, deve-se destacar
Apesar de recentemente ter havido uma aumento da pre outro fator que contribui para o aumento dos ataques: a
ocupação com segurança, notícias de invasões continuam evolução constante da tecnologia utilizada nas aplicações
no noticiário e o número de incidentes de segurança tem web. Como a tecnologia utilizada no desenvolvimento de
aumentado ano a ano. aplicações web evolui muito rapidamente, as aplicações web
Segundo dados divulgados pelo Centro de Estudos, Res trazem consigo, a todo o momento, uma nova variedade de
posta e Tratamento de Incidentes de Segurança no Brasil falhas de segurança. Novos ataques, que antes do desen
(CERT.br), e que podem ser visualizados na Figura 1, em volvimento da aplicação não eram conhecidos, são criados
2009 foram registradas 358.343 notificações de incidentes após o desenvolvimento e podem ser exploradas até serem
de segurança. Isso representa um aumento de 61% em corrigidos.
relação a 2008 e de 11530% em relação ao número de inci Alguns problemas, como a injeção SQL têm diminuído a
dentes registrados em 1999, primeiro ano da medição. Esses frequência de ocorrência conforme os desenvolvedores se
números são coerentes com outro estudo publicado pela conscientizam deles. Entretanto, a introdução cada vez mais
Edição 24 - Engenharia de Software Magazine 7
8. frequente de novas tecnologias possibilita novas possibilidades O principal problema das aplicações web é que, como a aplicação
de exploração. não tem como garantir quais entradas os clientes irão submeter,
Existem diversas e excelentes ferramentas proprietárias pode-se submeter entradas arbitrárias, mesmo que a aplicação
que auxiliam no teste de segurança de aplicações web. Con faça tratamento no cliente para evitar isso. Portanto, qualquer
tudo, a maioria dessas ferramentas comerciais possui um aplicação web deve considerar que todos os usuários são poten
custo bastante elevado. Esse artigo se concentrará, então, na ciais invasores e devem tomar medidas para evitar que pessoas
apresentação de extensões para navegadores e ferramentas mal intencionadas utilizem essas entradas para comprometer a
Open Source que ajudam os testadores e especialistas em aplicação. Esse problema se manifesta de várias formas:
segurança nos testes de segurança de aplicações web. • Usuários podem interferir em qualquer conjunto de dados
transmitidos entre o cliente e o servidor, incluindo requisições,
Principais falhas e a utilização de SSL cookies e cabeçalhos HTTP. Qualquer controle implementado
Conforme pôde ser visto na seção anterior, o número de do lado do cliente, como validações de entradas podem ser fa
incidentes de segurança vem aumentando a cada ano e a cilmente burladas;
maioria dos sites possui problemas de segurança. Em con • As requisições podem ser enviadas pelos usuários em qualquer
traste com esses dados, ao consultar a página de FAQ de sequência. Qualquer suposição relativa à ordem como as requisi
uma aplicação típica da web, o usuário será “tranquilizado” ções serão feitas pelos usuários pode ser burlada;
que ela é segura pelo fato do site utilizar a tecnologia SSL. • Não se deve supor que os usuários utilizarão o navegador para
Os usuários são frequentemente convidados a verificar interagir com a aplicação. Existem várias ferramentas que permi
o certificado do site, comprovar os avançados protocolos tem a interação com um servidor, sem a utilização do navegador.
criptográficos em uso, e, com isso, é levado a confiar que Essas ferramentas permitem que se façam requisições que não
suas informações pessoais estão em boas mãos. Indepen seriam possíveis caso fosse utilizado um navegador comum.
dentemente de estar ou não utilizando SSL, a maioria das
aplicações web ainda contém falhas de segurança, falhas
essas que não têm nada a ver com a utilização ou não de
SSL. A utilização da tecnologia SSL é importante porque
ela protege a integridade do dado durante a transição entre
o navegador do usuário e o servidor web. Entretanto, SSL
não irá impedir os ataques que comprometem diretamente
os servidores ou os clientes de uma aplicação como ocorre
na maioria dos ataques.
Segue abaixo algumas falhas que não são resolvidas com a
utilização de SSL e na Figura 2, sua frequência de ocorrência
segundo STUTTARD:
• Falha de autenticação: Essa falha ocorre quando as creden
ciais de acesso ao site não são protegidas adequadamente; Figura 2. Frequência de incidencia das principais falhas na Web
• Falha no controle de acesso: Essa falha envolve casos onde
a aplicação não consegue proteger o acesso aos seus dados Existem ferramentas que testam automaticamente um conjunto
e funcionalidades, permitindo que o invasor veja dados grande de entradas visando encontrar falhas. Alguns exemplos
privados de outro usuário e acione comandos aos quais ele de entradas enviadas são:
não tem acesso; • Modificação de um valor transmitido em um campo escondido
• Injeção SQL: Essa falha ocorre quando a aplicação permite do HTML (hidden);
que o invasor injete comandos no banco de dados utilizando, • Modificação de um token da sessão, para roubar a sessão de
para isso, a aplicação; outro usuário autenticado;
• Cross-Site Scripting: Cross-Site Scripting (XSS) é uma • Remoção de certos parâmetros que são normalmente submeti
falha em que se permite ao atacante inserir código (ex: Java dos, para explorar falhas de lógica na aplicação;
Script ou tags HTML) em páginas Web, visando conseguir • Alterar alguma entrada para tentar fazer um acesso ao banco
informações de outros usuários ou acessos restritos; de dados.
• Vazamento de informações: Essa falha ocorre quando
as aplicações divulgam, sem intenção, informações sobre Nas próximas seções serão apresentadas ferramentas livres e
suas configurações, processos internos ou privacidade que podem ser utilizadas para realizar os testes de segurança
devido a problemas na aplicação. Isso é muito crítico, pois em aplicações web.
a divulgação de informações sobre a versão do servidor
de aplicação ou do banco de dados utilizado, por exemplo, Montando seu ambiente de testes com ferramentas livres
pode indicar ao invasor quais as falhas às quais a aplicação Alguns ataques a aplicações web podem ser executadas usan
está vulnerável. do apenas um navegador web padrão. Entretanto, para que o
8 Engenharia de Software Magazine - Testes de segurança
9. Validação, Verificação & Teste
teste de segurança seja mais efetivo, exige-se a é convidado a encontrá-la e, caso o testador não a encontre, o WebGoat
utilização de ferramentas adicionais para que seja permite a solicitação de dicas para a identificação da falha. Caso não se
possível encontrar mais falhas de segurança. Mui consiga identificar a falha, após dicas de como encontrá-la, é possível
tas dessas ferramentas funcionam em conjunto ainda consultar uma descrição da solução. Se mesmo assim o testador não
com o navegador, quer como extensões que modi entender como encontrar a falha, pode-se consultar vídeos demonstrando
ficam a sua funcionalidade, ou como ferramentas passo a passo como identificá-la. O WebGoat é uma aplicação de extrema
externas que funcionam ao lado do navegador e necessidade, principalmente para iniciantes nos testes de segurança e que
modificam sua interação com o aplicativo alvo. querem aprender a realizar alguns testes. Os exemplos de utilização das
Para testar uma aplicação procurando por falhas ferramentas e extensões para navegadores apresentadas nesse artigo foram
de segurança é necessário ter domínio sobre essas feitos utilizando-se o WebGoat como aplicação alvo.
ferramentas. Nas próximas sessões, serão citadas
algumas extensões para o Firefox e ferramentas Navegadores
livres utilizadas para auxiliar o testador durante Um navegador web não é exatamente uma ferramenta hacker. Porém, a
os testes de segurança. escolha pelo navegador utilizado pode auxiliá-lo no teste a uma aplicação
web. O Firefox é, hoje, o segundo navegador mais utilizado do mundo
Ferramentas necessárias para a realização compreendendo, segundo alguns estudos, cerca de 25% do mercado e
dos testes possui diversas extensões que auxiliam o testador no teste de segurança
A primeira ferramenta que o testador deve de uma aplicação web. Abaixo iremos descrever algumas das extensões
possuir para realizar os testes, além do próprio que podem auxiliar nessa tarefa.
navegador, é um Proxy interceptador. Um Proxy • FoxyProxy: Permite o gerenciamento das configurações de proxy do
interceptador permite visualizar e modificar navegador, possibilitando a troca rápida entre os proxies utilizados,
todas as mensagens HTTP que passam entre o realização de configurações de Proxies diferentes para URLs diferentes.
navegador e a aplicação. Como os Proxies são ferramentas essenciais em testes de aplicações web,
Atualmente, além dos Proxies básicos existem
suítes que se tornaram muito poderosas por
possuírem, além dos Proxies, um conjunto de
outras funções projetadas para ajudá-lo no ataque
a aplicações web.
A segunda categoria principal de ferramenta é
conhecida como Web Spider. Essas ferramentas
agem solicitando páginas web, analisando os links
para outras páginas, e em seguida, solicitando
essas páginas. Eles continuam recursivamente até
que todo o conteúdo de um site seja descoberto.
A terceira categoria principal de ferramenta é o
Scanner de aplicação web. Essas ferramentas são
concebidas para automatizar muitas das tarefas
envolvidas no ataque a uma aplicação web reali
zando desde o mapeamento inicial até a sondagem
por vulnerabilidades. Essas ferramentas fazem
uma busca automática por toda a aplicação subme
tendo dados e analisando as respostas para, com
isso, tentar encontrar automaticamente falhas de
segurança conhecidas.
A quarta categoria principal de ferramenta ne
cessária, principalmente quando o testador quer
realizar alguns testes em seu ambiente, é uma
aplicação cheia de falhas onde ele possa fazer
alguns experimentos. Essa aplicação existe. O
WebGoat é uma aplicação Web Open Source do
projeto OWASP. Nessa aplicação as falhas foram
inseridas propositalmente e seu principal objetivo
é ser um laboratório onde o testador aprende, na
prática, as principais vulnerabilidades encontra
das em aplicações Web. Para cada falha, o usuário
Edição 24 - Engenharia de Software Magazine 9
10. visto que eles permitem interceptar todas as requisições e Como essas ferramentas funcionam
respostas e modificá-las, e, além disso, muitas vezes utiliza- Cada suíte de testes integrados contém várias ferramentas
se mais de um Proxy durante o teste, essa extensão é impor complementares que compartilham informações sobre a
tante para agilizar esse processo de seleção e modificação aplicação alvo. Normalmente, o testador interage com a
do Proxy utilizado; aplicação de uma forma normal através do seu navegador,
• Tamper Data: extensão do Firefox que permite interceptar e as ferramentas de acompanhamento monitoram os re
e modificar as requisições HTTP enviadas e recebidas pelo sultados dos pedidos e das respostas, armazenando todas
navegador; as informações pertinentes sobre a aplicação de destino e
• LiveHTTPHeaders: É uma extensão do Firefox que permite provendo inúmeras funções úteis. Cada suíte dispõe dos
visualizar os cabeçalhos HTTP enviados ao servidor web seguintes componentes principais:
ou os que são recebidos do servidor; • Um Proxy Interceptador;
• Edit Cookies: permite adicionar e modificar valores e • Uma aplicação spider;
atributos dos cookies; • Várias funções partilhadas e utilitárias.
• CookieWatcher: permite que o valor do cookie seja moni
torado na barra de status. Proxy Interceptador
O Proxy Interceptador fica no centro da suíte de ferramen
Muitas vezes é possível modificar o seu navegador para tas e é o único componente realmente essencial na suíte.
ajudá-lo no ataque de uma aplicação: Para utilizá-lo, deve-se configurar o navegador para usar o
• Se a aplicação não utilizar cookies para armazenar tokens Proxy escolhido como servidor Proxy em uma porta local
de sessão, pode-se utilizar vários processos do mesmo na na própria máquina. O Proxy é, então, configurado para
vegador, cada um com uma sessão diferente sobre o pedido. escutar essa porta e receber todos os pedidos emitidos pelo
Por exemplo, quando estiver testando o controle de acesso, navegador e repassá-lo ao destino. Como ele tem acesso aos
pode-se utilizar uma instância do navegador logada com um dois sentidos da mensagem entre o navegador e o servidor
usuário com mais privilégio e outra logada com uma sessão web e age como um interceptador, ele consegue barrar cada
com um usuário com poucos previlégios e assim, testar rapi mensagem para revisão e modificação pelo usuário, para
damentte a aplicação com poucos pedidos de visitas; só então encaminhá-la ao destino.
• É possível limpar os dados que um navegador guarda
sobre alguma aplicação (principalmente dentro de cookies Outras características comuns presentes nessas
e cache) de forma a iniciar novamente com o pedido como suítes
um novo usuário; Além de sua função principal de permitir a interceptação
• Pode-se acionar o botão direito do mouse em um link e e alteração de requisições e respostas, os Proxies possuem
abri-lo em uma nova janela ou guia para explorar uma fun uma riqueza de outros recursos para ajudar nos testes de
cionalidade que chama a atenção do invasor por aparentar segurança de aplicações web. Entre os recursos, incluem-
apresentar falhas de segurança, mantendo a sua posição se os seguintes:
anterior para continuar trabalhando de forma sistemática • É permitida a criação de regras de interceptação,
através da aplicação. possibilitando que as mensagens sejam intercepta
das para revisão ou silenciosamente retransmitidas,
Com essas extensões, os testes de segurança poderão ser com base em critérios definidos pelo testador como
realizados com muito mais facilidade. Apesar disso, para host de destino, url, método, tipo de recurso, código
realizar testes mais completos, é necessária a utilização de resposta, ou o aparecimento de determinadas ex
de mais ferramentas, que serão descritas nas próximas pressões, conforme pode ser visualizado na Figura 3.
sessões. Em uma aplicação típica, muitas requisições e respostas são
de pouco interesse para o testador, e esta função permite
Outras ferramentas úteis configurar o Proxy para interceptar apenas as mensagens
Após o navegador web, o item mais útil no seu conjunto que lhe são interessantes;
de ferramentas ao atacar uma aplicação web é um Proxy • Um histórico detalhado de todas as requisições e respos
Interceptador. No começo da Web os Proxies Interceptador tas, o que permite que mensagens antigas sejam revistas e
eram aplicações que proviam funcionalidades básicas. Nos analisadas posteriormente;
últimos anos, os Proxies Interceptador expandiram-se para • Regras para a modificação dinâmica do conteúdo das
um grande número de suítes, cada uma contendo muitas requisições e respostas. Esta função pode ser útil em
ferramentas interconectadas desenvolvidas para auxiliar inúmeras situações, por exemplo, para reescrever o valor
em todas as tarefas envolvidas no ataque a uma aplicação de um cookie ou outro parâmetro em todos os pedidos
web. Todas as funcionalidades referentes a Proxies Inter visando remover diretivas de cache, para simular um
ceptador citadas no restante desse artigo estão presentes navegador específico modificando o cabeçalho e assim
no WebScarab, uma ferramenta livre do projeto Owasp. sucessivamente;
10 Engenharia de Software Magazine - Testes de segurança
11. Validação, Verificação & Teste
Existem algumas ferramentas que varrem toda a aplicação
procurando por falhas conhecidas e, após a varredura, emitem
um relatório com os pontos suspeitos de possuírem falhas de
segurança. Os recursos a seguir estão presentes na ferramenta
Paros, que permite a execução de uma varredura na aplicação
à procura de falhas de segurança:
• Permite varreduras automatizadas para detectar vulnerabili
dades conhecidas. O Paros envia um conjunto de sequências de
ataque e analisa as respostas para identificar vulnerabilidades
conhecidas. A Figura 5 mostra o resultado de uma Varredura
feita utilizando esta ferramenta. Verifique na figura que é
possível identificar a URL onde se suspeita que exista a falha
de segurança e os parâmetros utilizados pelo Paros.
Figura 3. Tela do WebScarab que permite a configuração das URLs que
serão interceptadas
• Acesso a funcionalidades de Proxy que permitem que se nave
gue no histórico de requisições e respostas, possibilitando, com
isso, que o testador identifique requisições suspeitas de possuírem
problemas de segurança e reemita o pedido, quantas vezes for
preciso e, caso necessário, faça modificações que permitam iden
tificar possíveis falhas, conforme pode ser visto na Figura 4;
Figura 5. Resultado de um scan na aplicação WebGoat realizado pelo Paros
• Permite o controle das sequências de ataque e formas de
incorporá-las às requisições. Possui ainda um histórico de
todas as requisições permitindo a revisão dos resultados para
a identificação de todas as respostas incomuns ou anômalas
que merecem maior investigação;
• Funções para extração de dados úteis a partir das respostas
do aplicativo - por exemplo, analisando os campos de usuário
e senha em uma página de detalhes. Isso pode ser útil quando
Figura 4. O WebScarab permite a visualização do Histórico das você está explorando vulnerabilidades diversas, incluindo
requisições realizadas
falhas na sessão e controles de acesso;
• Funcionalidades para o mapeamento completo de toda a apli • Funções para analisar cookies e outros tokens para qualquer
cação, funcionalidades essas conhecidas como Web Spiders. Os sequência.
Web Spiders agem solicitando páginas web, analisando os links
para outras páginas, e em seguida, solicitando essas páginas. Uma ressalva é que, todas as possíveis falhas apontadas
Eles continuam recursivamente até que todo o conteúdo de pelo Paros devem ser investigadas, pois após uma análise,
um site seja descoberto; descobre-se que muitas delas não são falhas. Esse excesso
• Funções que permitem revelar campos e comandos de falsos positivos acaba fazendo com que o testador perca
escondidos. muito tempo analisando os possíveis defeitos. O autor deste
artigo desconhece, até a presente data, uma ferramenta livre
Scanners de aplicação que faça a varredura de uma aplicação, procurando por
Embora seja possível realizar um teste bem-sucedido falhas de segurança conhecidas, e que seja tão boa quanto
usando apenas técnicas manuais, para se tornar um bom alguns scanners proprietários disponíveis no mercado. Ape
testador, é necessário fazer uso de automação, para aumentar sar de falsos positivos ocorrerem também nas ferramentas
a rapidez e eficácia dos testes. comerciais, ocorrem em uma escala bem menor do que no
Edição 24 - Engenharia de Software Magazine 11
12. Paros, ocasionando uma economia de tempo do testador na Funcionalidades adicionais
análise de falhas. Além de suas ferramentas principais, as suítes de teste de
Além disso, segundo SUTO, autor do artigo Analyzing the Accu- segurança normalmente fornecem uma vasta gama de outras
racy and Time Costs of Web Application Security Scanners, mesmo as funcionalidades que visam atender a necessidades específicas
ferramentas proprietárias chegam a não detectar, dependendo que surgem quando se está testando a segurança de uma apli
da ferramenta utilizada, 66% das falhas presentes em um site, cação web, e que permitam a outras ferramentas trabalharem
o que faz com que não se possa confiar cegamente nessas ferra em situações inusitadas. Os recursos abaixo estão disponíveis
mentas e torna importante o papel do testador na identificação no WebScarab:
desses defeitos não identificados pelos Web Scanners. • Análise da estrutura de mensagens HTTP, incluindo análise e
modificação de cabeçalhos e parâmetros do pedido, conforme
Requisições manuais pode ser visto na Figura 7;
As suítes livres, como o WebScarab, permitem ainda facilida
des para que o usuário emita uma única requisição e visualize
a sua resposta. Embora simples, esta função muitas vezes é
extremamente útil quando se está investigando uma possível
vulnerabilidade e, para isso, pode existir a necessidade de ree
ditar a mesma requisição manualmente várias vezes, aprimo
rando elementos da requisição para determinar o efeito sobre
o comportamento da aplicação.
Logicamente, com uma ferramenta com as funções integradas
você pode recuperar rapidamente uma requisição interessante
de outro componente utilizado no teste (Proxy, spider, etc.) para
investigação manual. Veja a Figura 6 para um exemplo de uma
tela do WebScarab onde é possível realizar a modificação de
uma requisição.
Figura 7. O WebScarab permite a interceptação e modificação de
pedidos e respostas
• Renderização de conteúdo das respostas HTML, sendo pos
sível visualizar a página da mesma forma que ela será exibida
no navegador web (Aba HTML da Figura 7);
• Capacidade de exibir e editar mensagens de texto e de forma
hexadecimal (Aba Hex da Figura 7);
• Funções de pesquisa por todas as requisições e respostas;
• Atualização automática do cabeçalho HTTP, para mantê-
lo consistente com qualquer edição manual do conteúdo da
mensagem;
• Codificadores e decodificadores para vários sistemas, per
mitindo a rápida análise dos dados da aplicação em cookies
e outros parâmetros;
• O suporte para utilização de outros Proxies, que não são os
Figura 6. Reedição manual de uma requisição integrados na aplicação, permitindo-lhe encadear ferramentas
diferentes ou acessar um aplicativo através do Proxy usado por
O WebScarab possui as seguintes funcionalidades relacionadas sua organização ou ISP;
ao envio de requisições manuais: • Ferramenta de apoio a métodos de autenticação de HTTP,
• Integração com outros componentes do conjunto, e a pos permitindo-lhe utilizar todos os recursos da suíte em ambien
sibilidade de submeter qualquer requisição de e para outros tes onde estes são utilizados, tais como LANs corporativas;
componentes para investigação posterior; • Suporte para os certificados de cliente SSL, permitindo-lhe
• Histórico de todos os pedidos e respostas, mantendo um re testar aplicações que utilizam essa tecnologia;
gistro completo de todas as requisições manuais para revisão • Manipulação das características do HTTP, como a codificação
posterior, e possibilitando que uma requisição modificada seja gzip, codificação de transferência em partes, e status 100 de
recuperada para análise posterior. respostas provisórias;
12 Engenharia de Software Magazine - Testes de segurança
13. Validação, Verificação & Teste
• Extensibilidade, permitindo que a funcionalidade incorpo as ferramentas livres ainda estão muito distantes de serem
rada seja alterada e estendida de forma arbitrária por código tão boas quanto as ferramentas comerciais disponíveis no
de terceiros; mercado, já que, como eles encontram muitos falsos positi
• Salvamento das configurações utilizadas na ferramenta, vos, acabam desperdiçando o tempo do testador na análise
permitindo que uma configuração específica seja reutilizada de falhas que não existem.
na próxima execução da suíte; Por fim, pôde-se perceber que o bom entendimento de
• O WebScarab é independente de plataforma, permitindo que como utilizar as ferramentas utilizadas é de extrema im
seja executado em todos os sistemas operacionais populares. portância para a melhoria da segurança dos Web Sites, visto
que mesmo os melhores Web Scanners proprietários podem
Conclusão não encontrar a maioria dos defeitos de segurança presente
Cada uma das ferramentas apresentadas neste artigo possui em uma aplicação Web.
funcionalidades importantes e que, juntas, permitem ao testa
dor a realização de testes de segurança de forma satisfatória.
Todas são eficazes e muito populares entre a comunidade que
utiliza softwares livres para testar a segurança de aplicativos Feedback
Dê seu feedback sobre esta edição! eu
na web. Com isso, a escolha de qual suíte será utilizada é uma
s
Dê
questão de preferência pessoal. Recomenda-se que seja feito A Engenharia de Software Magazine tem que ser feita ao seu gosto.
sobre e
o download das ferramentas descritas para que o próprio Para isso, precisamos saber o que você, leitor, acha da revista!
s
ta
edição
testador escolha qual ferramenta utilizar em seus testes. Dê seu voto sobre este artigo, através do link:
Entretanto, apesar das ferramentas livres terem evoluído www.devmedia.com.br/esmag/feedback
bastante, pode-se perceber que em relação aos Web Scanners,
Referências e links
STUTTARD, Dafydd, PINTO, Marcus. The Web Application Hacker’s Handbook: Discovering and Projeto Owasp
Exploiting Security Flaws. Wiley Publishing, 2007. http://www.owasp.org
MCGRAW, Gary, Software Security: Building Security In. Addison Wesley Professional, 2006. WebScarab
http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project
Testing Experience: The Magazine for Professional Testers, Security Testing, Junho de 2009.
WebGoat
SUTO, Larry. Analyzing the Accuracy and Time Costs of Web Application Security Scanners. São http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
Francisco, Fevereiro de 2010.
Paros - for web application security assessment
Widespread security flaws revealed in online banks http://www.parosproxy.org/index.shtml
http://www.ur.umich.edu/0708/Jul28_08/02.php
WhiteHat: Web Security Vulnerabilities Found on Most Sites
http://www.eweek.com/c/a/Security/WhiteHat-Web-Security-Vulnerabilites-Found-on-Most-
Sites707138
Edição 24 - Engenharia de Software Magazine 13
14. Engenharia
Nesta seção você encontra artigos voltados para testes, processo,
modelos, documentação, entre outros
Gerência de Configuração
Definições Iniciais, Ferramentas e Processo
De que se trata o artigo?
Neste artigo serão mostrados inicialmente aspectos
relevantes da gerência de configuração. Na segun-
Alberto Boller Filho Marcelo Nascimento Costa da parte do artigo, será apresentada a aplicação da
alberto.boller@gmail.com mnc@kalisoftware.com
Formado em Tecnólogo Análise de Sistemas pelo
gerência de configuração dentro dos principais mo-
Mestre em Engenharia de Sistemas e Computação
Centro Universitário Instituto Metodista Bennet. pela COPPE/UFRJ (avaliada como a melhor pós- delos de maturidade e as vantagens de se utilizar
Possui mais de 30 anos de experiência em infor- graduação em computação do país). Bacharel em tais ferramentas, através de um estudo de caso de
mática. Possui especialização em administração Ciência da Computação pela UFPA. Professor dos implementação em uma empresa hipotética.
de redes Linux Conectiva, segurança de redes cursos de graduação em computação e adminis-
Linux Conectiva, administração de redes Windo- tração do Instituto Metodista Bennett. Autor de
ws NT e Windows Server 2003, programação de diversos artigos científicos sobre Engenharia de Para que serve?
aplicações cliente servidor avançada em Delphi, Software publicados em revistas e conferências Este trabalho tem como intuito servir como um mate-
programação RPGII, programação COBOL, System renomadas, dentro e fora do país. rial de apoio para aqueles que desejam implementar
Administrator NOTES, Application Development gerência de configuração em uma organização de-
NOTES. Atualmente é Gerente de informática na Marcos Kalinowski
clínica de diagnóstico por imagens “CEPEM “ Cen-
senvolvedora de software, usando como ferramen-
mk@kalisoftware.com
tro de Estudos e Pesquisa da Mulher”. Doutorando e Mestre em Engenharia de Software tas de controle de mudanças e controle de versões, o
pela COPPE/UFRJ (avaliada como a melhor pós- Mantis e o Subversion respectivamente.
Rodrigo Oliveira Spínola graduação em computação do país), com ênfase
rodrigo@sqlmagazine.com.br em Validação, Verificação e Testes de Software e Em que situação o tema é útil?
Doutorando e Mestre em Engenharia de Software Melhoria de Processos. Bacharel em Ciência da Para qualquer empresa de desenvolvimento de
pela COPPE/UFRJ (avaliada como a melhor pós- Computação pela UFRJ. Professor do curso de pós-
software que tenham interesse em aumentar o
graduação em computação do país). Criador do graduação e-IS Expert da UFRJ e Coordenador do
projeto e editor chefe da revista Engenharia de curso de Engenharia da Computação da UVA RJ. controle e confiabilidade nos artefatos gerados
Software Magazine. Autor de diversos artigos pela equipe de desenvolvimento ao longo de
C
científicos sobre Engenharia de Software publica- om um mercado cada vez mais um processo de desenvolvimento de software.
dos em revistas e conferências renomadas, dentro exigente, as empresas que fabri
e fora do país. Experiência de participação em
cam software tem revisto seus
diversos projetos de consultoria para diferentes
empresas tendo atuado com gerência de projetos, processos de construção com o intuito de software voltadas para o controle tem
requisitos e testes de software. Implementador aumentar a qualidade de seus produtos sido elaboradas uma vez que um pro
certificado do MPS.BR, tendo também experiência e também sua produtividade. Diversas jeto de software, ao longo do seu ciclo
atuando junto a empresas certificadas CMMI. metodologias de desenvolvimento de de vida, tem uma grande quantidade
14 Engenharia de Software Magazine - Gerência de Configuração
15. Projeto
de itens de informação tais como documentos, código-fonte, A primeira lei da engenharia de sistemas diz:
dados, manuais e outros, produzidos e até modificados, pelos “Independente de onde você está no ciclo de vida de um sistema, o
mais diversos motivos. sistema vai se modificar e o desejo de modificá-lo vai persistir ao longo de
Para que a qualidade do software seja garantida, em fun todo o ciclo de vida”. Bersoff (1980 apud Pressman, 2006, p. 600)
ção destas modificações, é necessário que se faça uso da
Gerência de Configuração de Software (GCS). A Gerência Produtos de software normalmente envolvem quantidades
de Configuração de Software tem como objetivo gerenciar significativas de artefatos que são manuseados por diversas
e controlar a evolução de um software através do controle pessoas envolvidas em seu projeto.
formal de versão e solicitação de mudanças. É uma forma Assim sendo, a possibilidade de introdução de defeitos au
sistemática e organizada de controlar as modificações de menta à medida que alterações são efetuadas sem uma analise
um software tornando possível manter sua integridade ao antes da sua execução, sem o registro formal antes da sua imple
longo do tempo. A quantidade de itens que podem estar mentação, sem a comunicação às pessoas que necessitam saber
sob controle da GCS e os níveis de controle exigidos sobre delas ou ainda sem um controle que vise melhorar a qualidade
estes itens irá variar de empresa para empresa ou mesmo e reduzir os erros.
de projeto para projeto. Sendo assim, o uso desta prática em Existem quatro fontes fundamentais de modificações de
conformidade com modelos de maturidade mantidos por en software:
tidades que possuam credibilidade nacional e internacional, • Novas condições de negócio e/ou mercado, modificam regras
e também o uso de ferramentas adequadas que garantam de negócio;
a qualidade deste processo, é fundamental para que uma • Novas necessidades do cliente exigem modificações de
empresa obtenha êxito e reconhecimento. funcionalidades;
Para empresas de grande porte, isto não chega a ser um • Reorganização e/ou crescimento/diminuição do negócio;
grande problema pois normalmente se dispõem de capital • Restrições de orçamento ou cronograma, causando redefinição
e pessoal qualificado para manter tais práticas. Entretanto, do sistema;
quando voltamos a olhar para as pequenas empresas, o
cenário é exatamente o oposto. As dificuldades e o custo Conceitos e Terminologias
envolvidos para se adotar um modelo de gestão, treinar pes A Gerência de Configuração de Software (GCS) ou Software
soal, adquirir ferramentas que apóiem a pratica de GCS, e Configuration Management (SCM) é uma atividade abrangente
ainda obter certificação em um determinado nível de modelo que ocorre ao longo de todo o ciclo de vida de um software e
de maturidade, de uma entidade reconhecida, pode levar que gerencia e controla sua evolução, através do controle de
uma pequena empresa a desistir rapidamente da adoção de versões e solicitações de mudanças, permitindo que os diver
um processo de GCS com qualidade, e como conseqüência, sos envolvidos na sua criação e manutenção tenham acesso ao
perder em competitividade para outras empresas. Este artigo histórico destas modificações, fornecendo-lhes subsídios para
foi feito com o foco voltado para estas empresas. o entendimento do sistema na sua forma atual, e também nas
Neste contexto, o objetivo deste artigo é mostrar uma solu suas formas anteriores.
ção especifica, de boa qualidade e baixo custo, que atenda As atividades de GCS incluem:
as exigências dos modelos de maturidade e que possa ser • Identificar modificações;
utilizada para implementar a Gerência de Configuração de • Controlar modificações;
Software em pequenas empresas. • Garantir a implementação adequada das modificações;
Sob esta perspectiva, será apresentada uma revisão bi • Relatar as modificações a outros que possam ter interesse.
bliográfica sobre GCS, sua aplicação dentro dos modelos
de maturidade CMMI e MPS e uma solução especifica uti Segundo Pressman (2006, p. 599), diferentemente da ativida
lizando as ferramentas Mantis e Subversion, através de um de de suporte de software, que ocorre depois que o software
estudo de caso de uma empresa fictícia de pequeno porte foi entregue ao cliente, a GCS é um conjunto de atividades de
que atenda as exigências do modelo de maturidade MPS, e acompanhamento e controle que começam quando o projeto
que possa servir como alternativa para empresas reais que de engenharia de software tem início e só terminam quando o
estejam buscando a implementação do processo de GCS. software é retirado de operação.
Serão apresentados também os aspectos de instalação e A Gerência de Configuração de Software tem especial impor
configuração das ferramentas, a fim de facilitar àqueles tância na garantia da qualidade do software e no apoio a gestão
que forem utilizá-las. de projetos, sendo imprescindível sua aplicação nas empresas que
desejam obter a certificação do Capability Maturity Model Integra
Gerência de Configuração tion (CMMI) nível 2 ou na obtenção da certificação do modelo para
Ao longo do ciclo de vida de um software, diversas modifi Melhoria de Processo do Software Brasileiro (MPS-BR) nível F.
cações podem ocorrer em seu projeto original. Os motivos Segundo Pressman (2006 p. 606), o processo de gestão de
e origens destas modificações podem ser os mais variados configuração de software define uma série de tarefas que têm
possíveis e podem ocorrer em qualquer época. quatro objetivos principais:
Edição 24 - Engenharia de Software Magazine 15
16. • Identificar todos os itens de configuração; efetivo. Fornece as funções óbvias de um sistema de gestão
• Gerir modificações em um ou mais destes itens; de banco de dados, mas, além disso executa ou propicia as
• Facilitar a construção de diferentes versões de um mesmo seguintes funções:
produto; • Integridade de dados – Valida entradas no repositório,
• Garantir que a qualidade do software seja mantida a medida garante consistência entre os ICS’s relacionados, executa mo
que a configuração evolui ao longo do tempo. dificações em cascata quando uma modificação em um objeto
exige modificações em objetos a ele relacionados;
Para podermos entender como estas tarefas são executadas, • Compartilhamento de informações – Fornece mecanismo
devemos conhecer alguns conceitos que são fundamentais para compartilhar a informação entre vários desenvolvedores e
para a aplicação de GCS. ferramentas, controla o acesso aos ICS’s por diferentes usuários
através de política de bloqueio e desbloqueio de modo que as
Configuração de Software modificações não sejam sobrepostas umas as outras;
Diversos elementos são gerados como produto de um pro • Integração de ferramenta – Provê uma estrutura de dados
cesso de software. Estes elementos podem ser: que permite acesso à várias ferramentas de engenharia de
• Programas de computador (tanto na forma de código fonte software;
como executável); • Integração de dados – Fornece funções de banco de dados
• Documentos que podem descrever programas, procedi que permitem que várias tarefas de GCS sejam executadas em
mentos regras de negócio etc. (Documentação técnica e de um ou mais ICS’s;
usuário final); • Imposição de metodologia – Define um modelo entidade
• Estrutura de dados que podem estar contidos em programas relacionamento que implica um modelo de processo especifico
ou externos a ele; de engenharia de software. O relacionamento entre objetos
definem um conjunto de passos a ser seguido para construir
A este conjunto de elementos, que compreende toda a in o conteúdo do repositório;
formação produzida no processo de software, chamamos de • Padronização de documentação – Normalização para a
“Configuração de Software”. criação de documentos de engenharia de software.
Itens de Configuração de Software – ICS
Segundo Molinari (2007 p. 44), um item de configuração é o
menor item de controle num processo de GCS.
Um item de configuração de Software (ICS) ou Software Con
figuration Item (SCI) é cada elemento criado durante o processo
de engenharia de software, ou que para este processo seja
necessário. Pode ser um arquivo, uma aplicação corporativa,
uma parte de um documento, uma seqüência de casos de teste,
um hardware ou um componente de programa. Além dos Figura 1. Classes e instâncias de um item de configuração
ICS´s gerados no processo de engenharia de software, também
poderão ser considerados como ICS’s ferramentas de software Um repositório tem que ser capaz de manter ICS’s relaciona
como editores, compiladores, navegadores e outras ferramentas dos a diversas versões do software e ainda fornecer mecanis
que forem necessárias à correta geração do software. mos para montar esses ICS’s em uma configuração especifica
Os ICS’s são identificados de maneira única e podem estar da versão, garantindo assim a gestão efetiva das entregas do
relacionados a outros ICS’s e sua evolução é passível de ras produto e permitindo aos desenvolvedores voltar a versões
treamento. O controle da Gerência de Configuração será feito anteriores. Precisa ser capaz de controlar variados tipos de
sobre estes itens e serão mantidas todas as informações a seu ICS’s incluindo textos, gráficos, mapas de bits e outros mais
respeito. Diversas versões de um mesmo ICS podem existir complexos.
como produto das modificações efetuadas no dia-a-dia. Além disso, o repositório deve ser capaz de guardar informa
Molinari (2007 p. 44) faz uma analogia interessante ao con ções sobre baselines e pistas de auditoria com informações sobre
ceito de classes em orientação a objetos (OO) quando diz que quando, por que, e por quem as modificações foram feitas.
o item está para uma “classe” em OO assim como as versões Estas informações são chamadas de metadados, e são definidas
deste item estão para as “instâncias” da classe em questão em um metamodelo que determina como as informações são
conforme mostrado na Figura 1. armazenadas no repositório, como ter acesso a elas, como podem
ser vistas pelos engenheiros de software, e como manter a sua
Repositório integridade e segurança.
Segundo Forte (1989 apud Pressman, 2006, p. 604), o repo Além de manter as informações sobre os ICS’s, o repositório
sitório é o conjunto de mecanismos e estruturas que per deve ser capaz de armazená-los fisicamente em um esquema
mite a uma equipe de software gerir modificação de modo de bibliotecas.
16 Engenharia de Software Magazine - Gerência de Configuração
17. Projeto
Os ICS’s são retirados e inseridos nos repositórios, através • Durante cada fase, a modificação de uma configuração-base
das seguintes operações: somente pode ser feita de forma controlada, mediante um
• LOCK: Garante que apenas um usuário detém o acesso para processo bem definido;
alterar um determinado ICS. Apesar de resolver o problema • Ao ser estabelecida, cada baseline incorpora integralmente
de atualização simultânea, o lock serializa o trabalho dos a anterior.
desenvolvedores. • O estabelecimento de cada baseline somente é realizado
• CHECK-OUT: Recupera a última versão de um item de após ser aprovada por procedimentos de consistência interna,
configuração guardado no repositório, copiando-o para a área verificação e validação;
de trabalho do desenvolvedor.
• CHECK-IN: Insere ou atualiza um item de configuração Na Figura 2 vemos uma representação de baselines adaptada
no repositório, incrementando a versão do ICS, e fazendo o de Molinari (2007, p 56).
registro das informações de mudança.
Identificação de ICS’s
A identificação dos ICs é uma área de extrema importância
dentro da Gerência de Configuração de Software. Sem uma
identificação correta de um item, é impossível gerenciar este
processo.
Cada ICS deve ser identificado através de características
Figura 2. Entendendo um baseline
distintas que o caracterizam unicamente. Estas características
podem ser um nome, uma descrição, uma lista de recursos etc. Controle de Versão
É necessário que cada organização defina suas convenções de Segundo Pressman (2006, p. 608), controle de versões
identificação. combina procedimentos e ferramentas para gerir diferentes
versões de objetos de configuração que são criados durante
Baseline o processo de software. Um sistema de controle de versão
Um baseline pode ser descrito como a situação de uma cole implementa ou está diretamente integrado com quatro ca
ção de ICS’s similares em um momento especifico do ciclo de pacidades principais:
vida de um software que foram aprovados e armazenados em • Um banco de dados de projeto (repositório) que guarda
uma biblioteca controlada. Pode ser descrito também como a todos os objetos de configuração relevantes;
conexão de um item de configuração com um determinado • Uma capacidade de gestão de versão que guarda todas as
marco no projeto (milestone). Um baseline pode ser visto como versões de um objeto de configuração;
um conjunto de itens de configuração identificados e liberados • Uma facilidade de construir que permite ao engenheiro de
para uso, independente de suas versões. software coletar todos os objetos de configuração relevantes
É importante identificar e agrupar estes ICS’s dentro dos e construir uma versão especifica do software;
baselines apropriados pois desta forma, cria-se uma estrutura • Capacidade de acompanhamento de tópicos (também cha
que facilita o rastreamento de mudanças à estes ICS’s. mado de acompanhamento de bugs).
Em cada fase do processo de desenvolvimento, um conjunto
bem definido de itens de configuração deve ser estabelecido. Segundo Molinari (2007, p. 168), alguns colocam que a prin
Tal conjunto representa um estágio do desenvolvimento, o qual cipal missão de um sistema de controle de versões é permitir
é passível de modificações apenas mediante um mecanismo a edição colaborativa e o compartilhamento de dados, outros
formal de alterações. A este conjunto é dado o nome de base dizem que o sistema de controle de versões rastreia e controla
lines, ou configurações base do sistema. todos os artefatos do projeto e desse modo consegue coorde
Em princípio, baselines poderiam ser estabelecidas em qual nar o trabalho paralelo de desenvolvedores.
quer ponto do desenvolvimento. Entretanto, a grande vanta Ainda segundo Molinari (2007, p.168), independente do que
gem do conceito está em se fazer coincidir o estabelecimento de cada um pensa sobre controle de versões, algumas das suas
baselines com os finais de fase do ciclo de vida do produto. características perceptíveis são:
O desenvolvimento com configurações base pode, então, ser • Mantém e disponibiliza cada versão já produzida de cada
resumido nos seguintes pontos: item do projeto;
• Caracterização do ciclo de vida, identificando-se as fases • Possui mecanismos para gerenciar diferentes ramos de
pelas quais o desenvolvimento do software irá passar; desenvolvimento possibilitando a existência de diferentes
• Definição do conjunto de baselines, estabelecendo-se quais versões de maneira simultânea;
serão os ICS’s que a irão compor; • Estabelece uma política de sincronização de mudanças que
• Estabelecer o marco o qual a baseline irá representar. Uma evita a sobreposição de mudanças;
nova baseline é estabelecida no final de cada fase do ciclo de • Fornece um histórico completo de alterações sobre cada
vida do software; item do projeto.
Edição 24 - Engenharia de Software Magazine 17
18. O sistema de controle de versões é o responsável por manter
as diversas versões dos ICS’s e faz isso através de um esquema
de arquivos e diretórios presentes no repositório, registrando
não só as alterações realizadas em cada arquivo mas também
na estrutura do diretório em si.
O repositório evolui, junto com o projeto guardando as múlti
plas versões que o compõe organizadas em forma de revisões.
As revisões são as situações estáticas de todos os arquivos do
projeto em um determinado instante de tempo.
Em empresas de grande porte, onde existem vários profissio
Figura 3. Branch de desenvolvimento
nais trabalhando concorrentemente nos mesmos arquivos, faz-se
necessário uma política para ordenar e integrar estas alterações, Merge
a fim de evitar a perda de um trabalho ocasionada quando uma Em projetos onde existe um grande número de pessoas en
pessoa sobrescreve o trabalho de outra. volvidas, é comum que elas possuam uma cópia de trabalho da
Os sistemas de controle de versão implementam esta política, linha principal de desenvolvimento. Neste contexto, o conceito
assegurando que os desenvolvedores não trabalhem diretamen de merge é também uma parte fundamental do controle de
te nos arquivos do repositório, mas sim em cópias de trabalho versões. O Merge faz a fusão de dois arquivos que estão sendo
destes arquivos em suas próprias máquinas. Isto permite que alterados simultaneamente por desenvolvedores diferentes
um desenvolvedor faça seu trabalho de forma independente e garantindo que a versão final contenha todas as alterações.
sem interferir no trabalho de outro. Após terminado o trabalho, Quando isso não é possível, mantém apenas a última versão
o arquivo deve ser colocado novamente no repositório e para que guardada e emite uma mensagem de “arquivo fora de data”
alterações não sejam inadvertidamente sobrepostas, o sistema para que as diferenças sejam resolvidas com intervenção
de controle de versões pode fazer uso das seguintes políticas humana. Em alterações demoradas, onde normalmente é
de versionamento: utilizada a técnica de branch, é recomendável que se façam
• Trava-Modifica-Destrava: Apenas uma pessoa por vez detém merges, periodicamente entre a linha principal e a ramificação,
o direito de alterar um determinado arquivo. O sistema trava o para que no final não fique inviável fazer o merge devido ao
arquivo quando uma pessoa retira uma cópia para manutenção grande número de conflitos gerados entre as diferenças das
e só libera a cópia para edição à outra pessoa, quando a primeira diversas versões.
publica sua nova versão. Esta política é limitada e pode causar
problemas administrativos e forçar a serialização do trabalho, Tags
entretanto, é a solução indicada para organizações que neces Um outro tipo de controle de versão são as tags. Tags são
sitam de um alto grau de formalização. como fotografias de um projeto, em um determinado instante
• Copia-Modifica-Resolve: Não utiliza travamento de arquivos. do tempo. São rótulos associados a um conjunto de arquivos
Nesta política, cada desenvolvedor trabalha de forma indepen usados para denominar um projeto ou uma nova versão, e que
dente em sua cópia de trabalho, e ao final, as alterações são rotulam estes arquivos. As tags nas versões de um conjunto
mescladas no repositório, formando a versão final. Esta política de itens de configuração, existente em diversos sistemas de
pode parecer caótica, mas na prática funciona bem, devido ao controle de versões, pode ser utilizado para implementar o
baixo índice de conflitos. Os conflitos são causados na maioria conceito de baseline.
das vezes, por falta de comunicação entre os desenvolvedores.
Controle de Modificação
Branch Mudanças são inevitáveis. Todo produto de software sofre
Branching (ou ramificação em português) é uma parte funda mudanças durante o seu ciclo de vida, seja por erro de cons
mental do controle de versões. O conceito de branching reside trução, ou por necessidade de mudanças solicitadas pelos
em se iniciar uma nova linha de desenvolvimento em paralelo clientes. Em projetos de grande porte, fazer modificações sem
à uma principal já existente. um esquema formal de controle pode levar ao caos. Alguns
Esta técnica é extremamente útil em situações onde temos dos problemas que podem ser causados em projetos devido a
que fazer grandes alterações em objetos de configuração e que mudanças não controladas são:
provavelmente levarão muito tempo, sem contudo afetar a linha • Aumento do custo do projeto;
principal de manutenção do sistema. Nesta situação, cria-se uma • Atrasos em entregas planejadas;
segunda cópia do objeto em questão e trabalha-se em paralelo • Impacto em outros objetos de configuração;
à linha principal. Ao longo do tempo, as manutenções feitas na • Degradação da qualidade do software;
linha principal poderão ser incorporadas na ramificação para • Retrabalho.
que defeitos encontrados na cópia original possam ser conser
tados também na ramificação. A Figura 3 demonstra como é a Controle de modificações podem incluir procedimentos
técnica de branching ao longo do tempo. humanos e também o uso de ferramentas automatizadas, e
18 Engenharia de Software Magazine - Gerência de Configuração
19. Projeto
seu objetivo é controlar estas mudanças e manter informações • Revisões técnicas formais;
sobre os pedidos de mudança, nos produtos e as implementa • Auditoria de configuração de software.
ções realizadas em função destas mudanças.
Informações do tipo quem, quando, por que e o que foi mu A revisão técnica tem como foco a correção técnica do ICS
dado, em um item de configuração, são guardadas para que que foi modificado a partir de uma requisição. Revisores
seja possível haver uma rastreabilidade entre suas versões avaliam o ICS para determinar se o mesmo é consistente.
anteriores e posteriores. Revisões técnicas formais normalmente são feitas para todas
O processo de controle de mudanças começa quando o clien as modificações, exceto as mais triviais.
te emite um pedido de comunicação. Este pedido passa pela A auditoria de configuração de software tem como objetivo
análise de uma Comissão de Controle de Modificações (do complementar a revisão técnica formal e trata dos seguintes
inglês Change Control Board – CCB), que é responsável pela aspectos:
sua aprovação ou não. É gerada então uma ordem de modifi • Verifica se a modificação técnica especificada foi realizada e
cação de engenharia (Engineering Change Order – ECO) pra as se foi incorporada alguma modificação adicional;
modificações aprovadas. O ICS é retirado do repositório para • Verifica se uma revisão técnica formal foi feita para avaliar
uma área de trabalho exclusiva do profissional, que irá executar a correção técnica;
as mudanças. As mudanças são executadas, as atividades de • Verifica se o processo de software foi seguido;
SQA são aplicadas, e os ICS’s modificados são introduzidos • Verifica se constam anotados no ICS modificado, dados de
no repositório com os mecanismos adequados de controle rastreabilidade tais como data da modificação, autor, nº de
de versão. Controles para acesso aos ICS’s pelos engenheiros requisição etc.;
e controles de sincronização de modificações paralelas por • Verifica se os procedimentos de GCS para registrar e relatar
pessoas diferentes são usados nesta etapa. a modificação, foram seguidos;
A Figura 4 esboça o processo formal de controle de modifi • Verifica se todos os ICS’s relacionados foram atualizados de
cações segundo Pressman (2006, p 610). forma adequada.
Quando a GCS é uma atividade formal, a auditoria de confi
guração é conduzida pelo grupo responsável pela garantia de
qualidade. A auditoria também tem como objetivo garantir que
os ICS’s corretos foram incorporados em um build específico e
que sua documentação está consistente com a nova versão.
Relatórios de Estado
Os relatórios de estado é uma tarefa de GCS que tem por
objetivo responder às seguintes questões:
• O que aconteceu ?
• Quem fez ?
• Quando aconteceu ?
• O que mais será afetado ?
O relatório de estado reúne informações de todos os estágios
da GCS. Atividades como identificação de ICS’s, aprovação de
modificações, resultado das auditorias de configuração são
registradas no relatório de estado. O relatório de estado deve
ser colocado em um banco de dados de maneira que todas
as pessoas envolvidas na manutenção de software tenham
acesso as informações ali contidas. O principal objetivo de
um relatório de estado é manter a gerência e os profissionais
informados das modificações sofridas por um software, de
vendo ser gerado regularmente.
Figura 4. Processo de controle de modificações (Pressman, 2006)
Ferramentas de Apoio à GCS
Auditoria de Configuração Existem diversas ferramentas disponíveis no mercado para
Além dos controles de identificação, versão e modificação apoiar a Gerência de Configuração de Sistemas. As funciona
vistos anteriormente, precisamos implementar algum mecanis lidades, documentação, o suporte disponível e popularidade
mo que nos garanta que as modificações foram feitas de forma variam bastante. As ferramentas comerciais apresentam
adequada. Este mecanismo envolve dois aspectos: maior número de funcionalidades mas tem um alto custo. As
Edição 24 - Engenharia de Software Magazine 19