SlideShare a Scribd company logo
1 of 64
Download to read offline
EDITORIAL

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

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

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

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



ÍNDICE
Engenharia

06 - Testes de segurança
                                                                                                                                                                                  Eduardo Habib

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

31 - Medição de Software
                                                                                                                                                                      Monalessa Perini Barcellos

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

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

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

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



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




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


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



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


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



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


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


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



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


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


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



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

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

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




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

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


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




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

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


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



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




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




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




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



  Referências e links

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

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

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




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




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

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


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


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



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


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

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


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



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

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


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


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



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

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

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

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


                                                                                 Edição 24 - Engenharia de Software Magazine   19
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44

More Related Content

What's hot

Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareCursoSENAC
 
Introdução a engenharia de software aula 02
Introdução a engenharia de software   aula 02Introdução a engenharia de software   aula 02
Introdução a engenharia de software aula 02Franklin Matos Correia
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareFelipe Goulart
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01Franklin Matos Correia
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Softwareelliando dias
 
Engenharia Requisitos - Método RON
Engenharia Requisitos - Método RONEngenharia Requisitos - Método RON
Engenharia Requisitos - Método RONEduardo Castro
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareNécio de Lima Veras
 
Analise de Requisitos de Software
Analise de Requisitos de SoftwareAnalise de Requisitos de Software
Analise de Requisitos de SoftwareRobson Silva Espig
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Sérgio Souza Costa
 
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Renato Leal
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentaisWaldemar Roberti
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitoselliando dias
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareCamilo de Melo
 
Cap1 introd-engenharia de software
Cap1 introd-engenharia de softwareCap1 introd-engenharia de software
Cap1 introd-engenharia de softwareAdilson Nascimento
 
Uma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareUma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareVinicius Garcia
 
Engenharia de Software Pressman
Engenharia de Software PressmanEngenharia de Software Pressman
Engenharia de Software PressmanSimoneinfo
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
 

What's hot (20)

Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Introdução a engenharia de software aula 02
Introdução a engenharia de software   aula 02Introdução a engenharia de software   aula 02
Introdução a engenharia de software aula 02
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Engenharia Requisitos - Método RON
Engenharia Requisitos - Método RONEngenharia Requisitos - Método RON
Engenharia Requisitos - Método RON
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Analise de Requisitos de Software
Analise de Requisitos de SoftwareAnalise de Requisitos de Software
Analise de Requisitos de Software
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais
 
Aula 02
Aula 02Aula 02
Aula 02
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de Software
 
Cap1 introd-engenharia de software
Cap1 introd-engenharia de softwareCap1 introd-engenharia de software
Cap1 introd-engenharia de software
 
Uma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareUma Introdução a Engenharia de Software
Uma Introdução a Engenharia de Software
 
Engenharia de Software Pressman
Engenharia de Software PressmanEngenharia de Software Pressman
Engenharia de Software Pressman
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 

Similar to Revista Engenharia de Software n° 44

Engenharia de Software introdução
Engenharia de Software    introduçãoEngenharia de Software    introdução
Engenharia de Software introduçãomiroslayer
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxRoberto Nunes
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareElaine Cecília Gatto
 
Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Érika Santos
 
Apresentação estrela vs cmmi nivel 2
Apresentação estrela vs cmmi nivel 2Apresentação estrela vs cmmi nivel 2
Apresentação estrela vs cmmi nivel 2Fernando Vargas
 
Dru - Desenvolvimento para Reuso
Dru - Desenvolvimento para ReusoDru - Desenvolvimento para Reuso
Dru - Desenvolvimento para ReusoJuliana Cindra
 
PROPOSTA DE ADAPTAÇÃO DAS PRÁTICAS DO SCRUM PARA O MPS.BR NIVEL G
PROPOSTA DE ADAPTAÇÃO DAS PRÁTICAS DO SCRUM PARA O MPS.BR NIVEL GPROPOSTA DE ADAPTAÇÃO DAS PRÁTICAS DO SCRUM PARA O MPS.BR NIVEL G
PROPOSTA DE ADAPTAÇÃO DAS PRÁTICAS DO SCRUM PARA O MPS.BR NIVEL Gjrnavarro
 
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa CertificadaQualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa CertificadaVinicius_Nunes
 
Introdução Qualidade de Software
Introdução Qualidade de SoftwareIntrodução Qualidade de Software
Introdução Qualidade de SoftwareWellington Oliveira
 
LIVRO PROPRIETÁRIO - QUALIDADE DE SOFTWARE
LIVRO PROPRIETÁRIO - QUALIDADE DE SOFTWARELIVRO PROPRIETÁRIO - QUALIDADE DE SOFTWARE
LIVRO PROPRIETÁRIO - QUALIDADE DE SOFTWAREOs Fantasmas !
 
Análise e Design Orientado a Objetos.ppt
Análise e Design Orientado a Objetos.pptAnálise e Design Orientado a Objetos.ppt
Análise e Design Orientado a Objetos.pptTzveDyor
 
Trabalho qualidade de_software
Trabalho qualidade de_softwareTrabalho qualidade de_software
Trabalho qualidade de_softwarestefaniak2004
 
PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfPDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfpedrina4
 
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...Joao Galdino Mello de Souza
 

Similar to Revista Engenharia de Software n° 44 (20)

Engenharia de Software introdução
Engenharia de Software    introduçãoEngenharia de Software    introdução
Engenharia de Software introdução
 
Artigo
ArtigoArtigo
Artigo
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptx
 
Artigo23
Artigo23Artigo23
Artigo23
 
Artigo corrigido
Artigo corrigidoArtigo corrigido
Artigo corrigido
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de Software
 
Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).
 
Apresentação estrela vs cmmi nivel 2
Apresentação estrela vs cmmi nivel 2Apresentação estrela vs cmmi nivel 2
Apresentação estrela vs cmmi nivel 2
 
Dru - Desenvolvimento para Reuso
Dru - Desenvolvimento para ReusoDru - Desenvolvimento para Reuso
Dru - Desenvolvimento para Reuso
 
PROPOSTA DE ADAPTAÇÃO DAS PRÁTICAS DO SCRUM PARA O MPS.BR NIVEL G
PROPOSTA DE ADAPTAÇÃO DAS PRÁTICAS DO SCRUM PARA O MPS.BR NIVEL GPROPOSTA DE ADAPTAÇÃO DAS PRÁTICAS DO SCRUM PARA O MPS.BR NIVEL G
PROPOSTA DE ADAPTAÇÃO DAS PRÁTICAS DO SCRUM PARA O MPS.BR NIVEL G
 
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa CertificadaQualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
 
Introdução Qualidade de Software
Introdução Qualidade de SoftwareIntrodução Qualidade de Software
Introdução Qualidade de Software
 
LIVRO PROPRIETÁRIO - QUALIDADE DE SOFTWARE
LIVRO PROPRIETÁRIO - QUALIDADE DE SOFTWARELIVRO PROPRIETÁRIO - QUALIDADE DE SOFTWARE
LIVRO PROPRIETÁRIO - QUALIDADE DE SOFTWARE
 
152191 11993
152191 11993152191 11993
152191 11993
 
Análise e Design Orientado a Objetos.ppt
Análise e Design Orientado a Objetos.pptAnálise e Design Orientado a Objetos.ppt
Análise e Design Orientado a Objetos.ppt
 
Cmmi e mps.Br
Cmmi e mps.BrCmmi e mps.Br
Cmmi e mps.Br
 
Trabalho qualidade de_software
Trabalho qualidade de_softwareTrabalho qualidade de_software
Trabalho qualidade de_software
 
PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfPDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
 
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
 
CMM e CMMI
CMM e CMMICMM e CMMI
CMM e CMMI
 

More from Carlos Antonio Castro Oliveira

More from Carlos Antonio Castro Oliveira (6)

Bancos de dados relacionais
Bancos de dados relacionaisBancos de dados relacionais
Bancos de dados relacionais
 
Curso struts e hibernate
Curso struts e hibernateCurso struts e hibernate
Curso struts e hibernate
 
Aplicando logica orientada_a_objeto_em_java
Aplicando logica orientada_a_objeto_em_javaAplicando logica orientada_a_objeto_em_java
Aplicando logica orientada_a_objeto_em_java
 
Estudo de caso da adoção das práticas e valores do extreme programming
Estudo de caso da adoção das práticas e valores do extreme programmingEstudo de caso da adoção das práticas e valores do extreme programming
Estudo de caso da adoção das práticas e valores do extreme programming
 
Guia php
Guia phpGuia php
Guia php
 
Qualidade de software site bb
Qualidade de software   site bbQualidade de software   site bb
Qualidade de software site bb
 

Revista Engenharia de Software n° 44

  • 1.
  • 2.
  • 3. EDITORIAL D iversas metodologias de desenvolvimento de software voltadas para o con- trole têm sido elaboradas uma vez que um projeto de software, ao longo do seu ciclo de vida, tem uma grande quantidade de itens de informação tais como documentos, código-fonte, dados, manuais e outros, produzidos e até modifi- cados, pelos mais diversos motivos. Para que a qualidade do software seja garantida, em função destas modificações, é Ano 2 - 24ª Edição - 2010 Impresso no Brasil necessário que se faça uso da Gerência de Configuração de Software (GCS). A Gerên- cia de Configuração de Software tem como objetivo gerenciar e controlar a evolução de um software através do controle formal de versão e solicitação de mudanças. É Corpo Editorial uma forma sistemática e organizada de controlar as modificações de um software tornando possível manter sua integridade ao longo do tempo. A quantidade de itens Colaboradores que podem estar sob controle da GCS e os níveis de controle exigidos sobre estes Rodrigo Oliveira Spínola itens irá variar de empresa para empresa ou mesmo de projeto para projeto. Sendo rodrigo@sqlmagazine.com.br assim, o uso desta prática em conformidade com modelos de maturidade mantidos Marco Antônio Pereira Araújo por entidades que possuam credibilidade nacional e internacional, e também o uso Eduardo Oliveira Spínola de ferramentas adequadas que garantam a qualidade deste processo, é fundamental para que uma empresa obtenha êxito e reconhecimento. Capa e Diagramação Para empresas de grande porte, isto não chega a ser um grande problema pois Romulo Araujo - romulo@devmedia.com.br normalmente se dispõem de capital e pessoal qualificado para manter tais práticas. Coordenação Geral Entretanto, quando voltamos a olhar para as pequenas empresas, o cenário é exata- Daniella Costa - daniella@devmedia.com.br mente o oposto. Neste contexto, a Engenharia de Software Magazine destaca nesta edição uma ma- Revisor e Supervisor téria cujo objetivo é mostrar uma solução especifica, de boa qualidade e baixo custo, Thiago Vincenzo - thiago.v.ciancio@devmedia.com.br que atenda as exigências dos modelos de maturidade e que possa ser utilizada para Na Web implementar a Gerência de Configuração de Software em pequenas empresas. Uma www.devmedia.com.br/esmag leitura muito interessante. Além desta matéria, esta edição traz mais seis artigos: • Automatizando Testes Funcionais em Aplicações Web Apoio • Testes de segurança • A Comunicação no Processo de Software • Testes funcionais automatizados com Hudson e Selenium RC • Medição de Software • Análise Quantitativa de Riscos e suas Técnicas Desejamos uma ótima leitura! Equipe Editorial Engenharia de Software Magazine Atendimento ao Leitor A DevMedia conta com um departamento exclusivo para o atendimento ao leitor. Se você tiver algum problema no recebimento do seu exemplar ou precisar de Rodrigo Oliveira Spínola algum esclarecimento sobre assinaturas, exemplares anteriores, endereço de rodrigo@sqlmagazine.com.br bancas de jornal, entre outros, entre em contato com: Doutorando em Engenharia de Sistemas e Computação (COPPE/UFRJ). Mestre em Engenharia de Software (COPPE/UFRJ, 2004). Bacharel em Ciências da Computação Cristiany Queiróz– Atendimento ao Leitor (UNIFACS, 2001). Colaborador da Kali Software (www.kalisoftware.com), tendo minis- www.devmedia.com.br/mancad (21) 2220-5338 trado cursos na área de Qualidade de Produtos e Processos de Software, Requisitos e Kaline Dolabella Desenvolvimento Orientado a Objetos. Consultor para implementação do MPS.BR. Atua Gerente de Marketing e Atendimento como Gerente de Projeto e Analista de Requisitos em projetos de consultoria na COPPE/ kalined@terra.com.br (21) 2220-5338 UFRJ. É Colaborador da Engenharia de Software Magazine. Marco Antônio Pereira Araújo - Editor Publicidade (maraujo@devmedia.com.br) Para informações sobre veiculação de anúncio na revista ou no site entre em Doutor e Mestre em Engenharia de Sistemas e Computação pela COPPE/UFRJ - Li- contato com: nha de Pesquisa em Engenharia de Software, Especialista em Métodos Estatísticos Kaline Dolabella publicidade@devmedia.com.br Computacionais e Bacharel em Matemática com Habilitação em Informática pela UFJF, Professor e Coordenador do curso de Bacharelado em Sistemas de Informação Fale com o Editor! do Centro de Ensino Superior de Juiz de Fora, Professor do curso de Bacharelado em É muito importante para a equipe saber o que você está achando da revista: que tipo de artigo Sistemas de Informação da Faculdade Metodista Granbery, Professor e Diretor do Cur- você gostaria de ler, que artigo você mais gostou e qual artigo você menos gostou. Fique a so Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Fundação vontade para entrar em contato com os editores e dar a sua sugestão! Educacional D. André Arcoverde, Analista de Sistemas da Prefeitura de Juiz de Fora, Se você estiver interessado em publicar um artigo na revista ou no site SQL Magazine, Colaborador da Engenharia de Software Magazine. entre em contato com os editores, informando o título e mini-resumo do tema que você gostaria de publicar: Eduardo Oliveira Spínola (eduspinola@gmail.com) Rodrigo Oliveira Spínola - Colaborador É Colaborador das revistas Engenharia de Software Magazine, Java Magazine e SQL Ma- editor@sqlmagazine.com.br gazine. É bacharel em Ciências da Computação pela Universidade Salvador (UNIFACS) onde atualmente cursa o mestrado em Sistemas e Computação na linha de Engenharia de Software, sendo membro do GESA (Grupo de Engenharia de Software e Aplicações).
  • 4. Caro Leitor Caro Leitor, Para esta edição, temos um conjunto de 4 vídeo aulas. Estas vídeo aulas estão disponíveis para download no Portal da En- genharia de Software Magazine e certamente trarão uma significativa contribuição para seu aprendizado. A lista de aulas publicadas pode ser vista abaixo: Tipo: Validação,Verificação & Teste Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte I - Tipo: Validação,Verificação & Teste Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte III - Explorando Casos de Uso para apoiar Testes Projeto dos Testes a partir de Casos de Uso Autor: Arilo Claudio Dias Neto Autor: Arilo Claudio Dias Neto Mini-Resumo: Nesta vídeo-aula é apresentado como preparar um modelo de casos Mini-Resumo: Nesta vídeo-aula é apresentado com detalhes o último passo que de uso e suas especificações para apoiar nas atividades de teste. São apresentadas as compõe o processo para apoiar no projeto de testes de software a partir de casos de informações que devem compor a especificação de um caso de uso e em seguida um uso: a alocação de casos e procedimentos de teste. Para isso, é seguido um caso de uso template de especificação de casos de uso. Ao final, é apresentado um processo para de exemplo (REALIZAR DEPÓSITO) e passamos por todas as etapas para construção dos apoiar no projeto de testes de software a partir de casos de uso. testes.Neste momento utilizamos os critérios para geração dos testes (particionamento por equivalência, análise do valor limite e grafo de causa-efeito) apresentados em Tipo: Validação,Verificação & Teste aulas anteriores. Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte II - Projeto dos Testes a partir de Casos de Uso Tipo: Validação,Verificação & Teste Autor: Arilo Claudio Dias Neto Título: Estratégia de Teste Funcional baseada em Casos de Uso Parte IV – Exercício Mini-Resumo: Nesta vídeo-aula é apresentado com detalhes o processo para Autor: Arilo Claudio Dias Neto apoiar no projeto de testes de software a partir de casos de uso, citado na aula Mini-Resumo: Nesta vídeo-aula é apresentado um outro exemplo de construção de anterior. Ele é formado por uma sequência de 4 passos que vão desde a identi- testes de software a partir de casos de uso (CADASTRAR FUNCIONÁRIO).Com isso,ficam ficação dos atores de um modelo de casos de uso até a construção de casos e disponíveis 2 exemplos com características diferentes a fim de facilitar o aprendizado. procedimentos de testes. Nesta vídeo-aula são apresentados apenas os 3 primeiros Ao final,são deixados pontos em aberto para que quem estiver acompanhando as aulas passos deste processo. possa dar continuidade ao projeto dos testes, como um exercício. ÍNDICE Engenharia 06 - Testes de segurança Eduardo Habib 14 - Gerência de Configuração Alberto Boller Filho, Rodrigo Oliveira Spinola, Marcelo Nascimento Costa e Marcos Kalinowski 31 - Medição de Software Monalessa Perini Barcellos Agilidade 38 - A Comunicação no Processo de Software Márcia Regina Simm Cantú Planejamento e Gerência 43 - Análise Quantitativa de Riscos e suas Técnicas Marcio Souza, Cristine Gusmão e Hermano Perrelli Desenvolvimento 49 - Automatizando Testes Funcionais em Aplicações Web Arilo Cláudio Dias Neto 57 - Testes funcionais automatizados com Hudson e Selenium RC Fabrício Nogueira de Almeida, Victor Vidigal Ribeiro e Marco Antônio Pereira Araújo 4 Engenharia de Software Magazine
  • 5. Edição 05 - Engenharia de Software Magazine 5
  • 6. Engenharia Nesta seção você encontra artigos voltados para testes, processo, modelos, documentação, entre outros Testes de segurança Testes de segurança em aplicações web De que se trata o artigo? Para que serve? Neste artigo veremos a importância de se reali- A realização de testes de segurança em aplicações zar testes de segurança em aplicações Web. Ao Web diminui a probabilidade de um software ser dis- desenvolver uma aplicação web, deve-se pensar ponibilizado para o usuário final com falhas críticas de na segurança dos dados durante toda a fase de segurança e que podem causar prejuízos ao usuário, desenvolvimento. Isso minimiza as falhas de se- seja ele financeiro ou a liberação de dados sigilosos. gurança que chegam ao usuário final. Esse artigo tratará dos testes de segurança realizados pelo Em que situação o tema é útil? testador após o software já estar desenvolvido. Testar a segurança de aplicações Web é importante Será demonstrada a importância de se realizar em qualquer aplicação que contenha dados sigilosos testes em aplicações web, as falhas de segu- e/ou onde ocorra, de alguma forma, transações finan- rança mais comuns na Internet e, por fim, serão ceiras entre o cliente e o servidor, pois diminuem a demonstradas extensões do Firefox e algumas probabilidade do software ser colocado em produção ferramentas que auxiliam nos testes de aplica- com uma falha crítica de segurança e que pode vir a Eduardo Habib ções web. ser explorada por alguma pessoa mal intencionada. eduardohabib@gmail.com Possui Graduação e mestrado em Ciência da Computação na UFMG. Atua na área de testes de software há nove anos. Nesses anos teve experiência no planejamento, especificação e execução de testes manuais, automação de testes, testes de desempenho e testes de A segurança. Possui três anos de experiência le- cionando no ensino superior. Freqüentemente segurança dos softwares de­ focados nos pontos onde a segurança ministra treinamentos e/ou palestras relacio- senvolvidos atualmente está tem uma probabilidade maior de ser nados a testes de software já tendo, inclusive, se tornando um ponto cada vez comprometida. ministrado a disciplina de Testes de Software mais importante a ser testado. Entretan­ Nesse artigo será demonstrada a im­ na PUC Minas. Possui as certificações CQA - to, testar a segurança de um software portância de se realizar testes de segu­ Certified Quality Assurance da IBM e CTFL do BSTQB. Atualmente é Gerente de testes no é algo muito complexo e custoso. Por­ rança em aplicações web. Serão apresen­ SYNERGIA - DCC/UFMG. tanto, os testes de segurança devem ser tadas quais as falhas de segurança são 6 Engenharia de Software Magazine - Testes de segurança
  • 7. Validação, Verificação & Teste mais comuns em aplicações web e algumas ferramentas livres Gartner, em que se estima que os ataques contra os sistemas que auxiliam nesses testes. do departamento de defesa dos EUA foram 60% maiores em 2009, se comparados com o ano anterior. Testes de segurança Além do aumento do número de invasões que podem ser No início da internet existiam apenas sites estáticos. Os visualizados na Figura 1, um estudo publicado pela Univer­ sites existentes desempenhavam papel apenas de repositó­ sidade de Michigan, revelou que mais de 75% dos sites de rios de informações que continham documentos estáticos, bancos, que são os que mais investem em segurança, não são e os navegadores web foram criados como uma forma de inteiramente seguros como dizem ser e estão sujeitos a falhas visualização desses documentos. A maioria dos sites não de segurança. Outro estudo, do instituto de pesquisa WhiteHat autenticava usuários porque não havia necessidade já que Security, publicou dados demonstrando que cerca de 64% dos a mesma informação era exibida para todos os usuários. Se 1364 sites de companhias avaliados possuíam pelo menos uma um invasor comprometesse um servidor, ele normalmente falha de segurança crítica. não ganhava acesso a nenhuma informação confidencial, visto que toda a informação já estava liberada para o público. No máximo, o invasor poderia escrever algum conteúdo no site ou utilizar o servidor como repositório de arquivos. Hoje em dia a internet é completamente diferente. A maioria dos web sites são aplicações complexas e possuem um fluxo de informações nos dois sentidos (servidor e navegador). Elas suportam login, transações financeiras e acesso a dados pessoais. O conteúdo exibido para os usu­ ários geralmente é gerado dinamicamente e muitas vezes é específico para cada usuário. Muitos dos dados proces­ sados, e exibidos, são pessoais. A segurança é, portanto, uma grande questão: ninguém utilizará uma aplicação web caso acredite que suas informações confidenciais serão exibidas para terceiros. Atualmente, para as aplicações web proverem as funcio­ Figura 1. Total de incidentes reportados ao CERT.br nalidades mais básicas, muitas vezes é necessário acessar sistemas internos da empresa e esses sistemas, muitas Isso é muito crítico para as empresas já que o aumento do vezes, contêm dados sigilosos. Uma falha em uma dessas faturamento das empresas que comercializam produtos na aplicações web pode comprometer todo o servidor. Um web está diretamente ligado à sua reputação. Poucas pessoas invasor que conseguir comprometer a aplicação web pode gostariam de fazer negócio com um site inseguro e, devido a roubar informações pessoais e com isso realizar ações isso, as organizações não costumam publicar detalhes sobre maliciosas contra os outros usuários. a segurança de seus dados, ataques sofridos e vulnerabili­ Tanto as empresas desenvolvedoras de software quanto dades, com o objetivo de não adquirir uma má reputação. os usuários finais têm grande interesse na segurança das Por isso, os números podem ser ainda mais alarmantes do aplicações: as empresas, devido à necessidade de aumentar que os publicados pelo CERT.br. o faturamento com comércio na internet, os usuários por­ Dentre os diversos fatores que influenciam o aumento que eles terão mais segurança para utilizar aplicativos. do número de incidentes de segurança, como a maior popularização da internet pelo mundo e o surgimento de Por que fazer testes de segurança? ferramentas que auxiliam nesses ataques, deve-se destacar Apesar de recentemente ter havido uma aumento da pre­ outro fator que contribui para o aumento dos ataques: a ocupação com segurança, notícias de invasões continuam evolução constante da tecnologia utilizada nas aplicações no noticiário e o número de incidentes de segurança tem web. Como a tecnologia utilizada no desenvolvimento de aumentado ano a ano. aplicações web evolui muito rapidamente, as aplicações web Segundo dados divulgados pelo Centro de Estudos, Res­ trazem consigo, a todo o momento, uma nova variedade de posta e Tratamento de Incidentes de Segurança no Brasil falhas de segurança. Novos ataques, que antes do desen­ (CERT.br), e que podem ser visualizados na Figura 1, em volvimento da aplicação não eram conhecidos, são criados 2009 foram registradas 358.343 notificações de incidentes após o desenvolvimento e podem ser exploradas até serem de segurança. Isso representa um aumento de 61% em corrigidos. relação a 2008 e de 11530% em relação ao número de inci­ Alguns problemas, como a injeção SQL têm diminuído a dentes registrados em 1999, primeiro ano da medição. Esses frequência de ocorrência conforme os desenvolvedores se números são coerentes com outro estudo publicado pela conscientizam deles. Entretanto, a introdução cada vez mais Edição 24 - Engenharia de Software Magazine 7
  • 8. frequente de 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