Otimização em engenharia de software

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Wikitext.svg
Este artigo ou seção precisa ser wikificado (desde dezembro de 2009).
Por favor ajude a formatar este artigo de acordo com as diretrizes estabelecidas no livro de estilo.

A Otimização em engenharia de software é uma recente área de pesquisa que trata da aplicação de técnicas de otimização matemática para a resolução de problemas complexos da engenharia de software. Apesar de já existirem trabalhos relacionados nas últimas décadas do século XX1 o campo obteve maior atenção e abrangência a partir de 2001 com a publicação de um artigo2 que deu a denominação "Search-based Software Engineering" ao campo.

A engenharia de software como uma área de engenharia[editar | editar código-fonte]

O nome da disciplina engenharia de software indica que sua função está na criação de softwares (incluindo, por exemplo, especificação, desenvolvimento e manutenção). Dessa forma, o termo 'engenharia' é usado pois nessa área da Ciência da Computação são definidos métodos e técnicas que objetivam a construção de sistemas de software com foco na definição e modelagem de aspectos do processo de construção do software. Dessa forma, a engenharia de software convencional trata das normas e práticas que devem ser seguidas para que sistemas de software possam ser construídos com qualidade.

O fator matemático que também transparece ao termo 'engenharia' não é comumente utilizado na engenharia de software. Entretanto, diversas são as situações durante o desenvolvimento de software nas quais a presença de características matemáticas são fatores essenciais3 . Por exemplo, considere o problema da seleção de casos de testes que acontece durante a fase de teste de software. Essa atividade poderia seguir regras textuais definidas em normas de processo de construção de software, mas percebe-se que um melhor resultado pode ser obtido se fatores matemáticos como a cobertura dos casos de teste e suas prioridades e ordem são levados em consideração4 . Dessa forma seria possível descobrir qual o conjunto de casos de teste que mais beneficiam a empresa de desenvolvimento em relação a custo, tempo, entre outros. Nesse caso, não é apenas a existência desses fatores matemáticos que indicam a necessidade de outra abordagem de resolução, mas também a presença de fatores como a seleção e ordenamento.

De acordo com essa visão, a área de engenharia de software pode ser vista com uma área de engenharia em todos os seus sentidos. O primeiro deles trata dos problemas relacionados com o processo de construção do software, que já são atacados pelas diversas metodologias de décadas de pesquisa em universidades e institutos. A segunda abordagem trata de certos problemas que estão mais relacionados a atividades de seleção e otimização de características. Os problemas dessa segunda abordagem não poderiam ser resolvidos, ou não seriam resolvidos de forma satisfatória, pelas técnicas convencionais.

A união de dois campos (Engenharia de software e Otimização)[editar | editar código-fonte]

Nesse contexto, percebe-se a validade de um campo de pesquisa de união entre a engenharia de software e a otimização matemática. O campo resultante ficou conhecido como Search-based Software Engineering' (SBSE) devido a um trabalho de 20012 , que descreveu essa necessidade e as principais possíveis aplicações do campo.

Na otimização em engenharia de software são encontrados fatores das duas áreas. Da engenharia de software são utilizados problemas complexos que ocorrem durante o desenvolvimento e que podem ser modelados matematicamente. Na verdade, muitos desses problemas não eram sequer considerados pelas abordagens convencionais da engenharia de software3 . Outro aspecto da engenharia de software presente na área trata da necessidade da análise dos resultados por especialistas. Dessa forma, as soluções encontradas pela otimização em engenharia de software geralmente requerem a avaliação por pessoas experientes no campo de aplicação para que seja possível definir se tais soluções são de fato interessantes. Outro fator importante trata da identificação e definição de problemas que possam ser resolvidos pelas técnicas de otimização.

A otimização matemática apresenta-se como o campo que permite a existência da SBSE. De fato, muitos dos problemas atacados nessa área são impossíveis de serem resolvidos a não ser por métodos matemáticos e computacionais. Entre as principais técnicas empregadas podem ser destacadas as metaheurísticas, devido a geral existência de características que impedem a aplicação de métodos exatos (como a presença de mais uma função de otimização ou não continuidade da função).

Além da resolução de importantes problemas da engenharia de software, a união entre engenharia de software e otimização matemática representa os seguintes avanços:

  • A tomada de decisões nas ocasiões dos problemas seguirá um processo mais objetivo, tendo em vista a consideração de variáveis matemáticas para a resolução do problema;
  • As soluções encontradas pelas técnicas de otimização refletem a "melhor" possibilidade de solução para o problema, indicando que a empresa desenvolvedora terá vantagens como menos desperdícios, produção do software em menos tempo, entre outros;

Exemplos de problemas considerados na otimização em engenharia de software[editar | editar código-fonte]

Problemas SBSE Search-based Software Engineering (Otimização em Engenharia de Software).png

Para que um problema da engenharia de software pertença ao campo da SBSE é necessário que o mesmo tenha algumas características. Por exemplo, o problema em questão deve, naturalmente, possuir aspectos matemáticos que possibilitarão a busca pela melhor solução. Outro aspecto importante trata da existência de uma grande quantidade de possibilidades para escolha. Outros problemas podem ser definidos, mas em geral essas características são presentes.

Exemplos de problemas já considerados na otimização em engenharia de software são mostrados na tabela ao lado. A primeira coluna traz a área da engenharia de software na qual o problema ocorre e na segunda coluna é apresentado o problema propriamente dito.

Como pode ser observado pela tabela, a otimização em engenharia de software encontra aplicação nas mais diversas fases do desenvolvimento de software. Além disso, a quantidade de áreas e problemas apresentada na tabela não representa no total todos os campos de aplicação.

Grupos de Pesquisa em Otimização em Engenharia de Software[editar | editar código-fonte]

Dentre os diversos pesquisadores e grupos de pesquisa que estudam a otimização em engenharia de software os seguintes grupos e projetos podem ser destacados:

  • No Reino Unido: O Projeto SEBASE (Software Engineerin By Automated SEarch) consiste de um importante grupo da área. O coordenador e diretor geral do projeto é Mark Harman, um do responsáveis pela criação do termo Search-based Software Engineering.
  • Nos Estados Unidos: Alguns pesquisadores podem ser indicados, como Myra Cohen e Gregory M. Kapfhammer, entre outros.
  • No Brasil: O grupo GOES.UECE (Grupo de Otimização em Engenharia de Software da Universidade Estadual do Ceará), coordenado pelo professor Jerffeson Teixeira de Souza, já produziu diversos trabalhos nessa área de pesquisa. Outros grupos de pesquisadores também se destacam no cenário nacional, como na UNIRIO (Universidade Federal do Estado do Rio de Janeiro), UFPB (Universidade Federal da Paraíba), UFAM (Universidade Federal do Amazonas) e UFPR (Universidade Federal do Paraná).

Eventos[editar | editar código-fonte]

A área de Otimização em Engenharia de Software já é tema central de eventos científicos.

O principal evento da área é o International Symposium on Search Based Software Engineering (SSBSE). A primeira edição (SSBSE 2009) aconteceu em Maio de 2009. A segunda edição (SSBSE 2010) aconteceu em Setembro de 2010.

Um evento específico para a área de Otimização em Teste de Software é o SSBST. O evento já teve três edições: SSBST 2008, SSBST 2009 e SSBST 2010.


No Brasil, o evento inicial na área é o WOES (Workshop Brasileiro de Otimização em Engenharia de Software). A sua primeira edição (WOES 2010), ocorreu em 30 de Setembro de 2010 em conjunto com o XXIV Simpósio Brasileiro de Engenharia de Software.

Ver também[editar | editar código-fonte]

Referências

  1. MILLER, W., SPOONER, D.L., Automatic generation of floating-point test data, IEEE Transactions on Software Engineering, IEEE, 1976, pp. 223-226.
  2. a b >HARMAN, M., JONES, B.F., Search-based software engineering, Information and Software Technology, 2001, pp. 833-839.
  3. a b FREITAS, F.G., MAIA, C.L.B., COUTINHO, D.P., CAMPOS, G.A.L., SOUZA, J.T., Aplicação de Metaheurísticas em Problemas da Engenharia de Software: Revisão de Literatura, II Congresso Tecnológico Infobrasil, 2009
  4. MAIA, C.L.B., CARMO, R.A.F., A Multi-Objective Approach for the Regression Test Case Selection Problem, XLI Simpósio Brasileiro de Pesquisa Operacional, 2009, http://goesuece.yolasite.com/resources/56096.pdf.

Ligações[editar | editar código-fonte]