EDITORIAL                                                                                                D                ...
Caro Leitor    Caro Leitor,    Para esta edição, temos um conjunto de 4 vídeo aulas. Estas vídeo aulas estão disponíveis p...
Edição 05 - Engenharia de Software Magazine   5
Engenharia    Nesta seção você encontra artigos voltados para testes, processo,    modelos, documentação, entre outros    ...
Validação, Verificação & Testemais comuns em aplicações web e algumas ferramentas livres      Gartner, em que se estima qu...
frequente de novas tecnologias possibilita novas possibilidades     O principal problema das aplicações web é que, como a ...
Validação, Verificação & Testeteste de segurança seja mais efetivo, exige-se a     é convidado a encontrá-la e, caso o tes...
visto que eles permitem interceptar todas as requisições e       Como essas ferramentas funcionamrespostas e modificá-las,...
Validação, Verificação & Teste                                                                          Existem algumas fe...
Paros, ocasionando uma economia de tempo do testador na              Funcionalidades adicionaisanálise de falhas.         ...
Validação, Verificação & Teste• Extensibilidade, permitindo que a funcionalidade incorpo­                                 ...
Engenharia     Nesta seção você encontra artigos voltados para testes, processo,     modelos, documentação, entre outros G...
Projetode itens de informação tais como documentos, código-fonte,        A primeira lei da engenharia de sistemas diz:dado...
• Identificar todos os itens de configuração;                     efetivo. Fornece as funções óbvias de um sistema de gest...
Projeto  Os ICS’s são retirados e inseridos nos repositórios, através    • Durante cada fase, a modificação de uma configu...
O sistema de controle de versões é o responsável por manteras diversas versões dos ICS’s e faz isso através de um esquemad...
Projetoseu objetivo é controlar estas mudanças e manter informações       • Revisões técnicas formais;sobre os pedidos de ...
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
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
Upcoming SlideShare
Loading in...5
×

Revista Engenharia de Software n° 44

4,853

Published on

Published in: Technology

Transcript of "Revista Engenharia de Software n° 44"

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

×