Soluções        Serviços          Atendimento       Governo        Consultoria T.I      Treinamento

Software

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 XX[1] o campo obteve maior atenção e abrangência a partir de 2001 com a publicação de um artigo[2] que deu a denominação "Search-based Software Engineering" ao campo.

Índice

  • 1 A engenharia de software como uma área de engenharia
  • 2 A união de dois campos (Engenharia de software e Otimização)
  • 3 Exemplos de problemas considerados na otimização em engenharia de software
  • 4 Grupos de Pesquisa em Otimização em Engenharia de Software
  • 5 Eventos
  • 6 Ver também
  • 7 Referências
  • 8 Ligações

A engenharia de software como uma área de engenharia

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 essenciais[3]. 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ção[4]. 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)

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 2001[2], 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 software[3]. 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

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

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) e UFAM (Universidade Federal do Amazonas).

Eventos

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

  • Search-based software engineering (na Wikipédia em inglês)

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

  • Página do Grupo de Otimização em Engenharia de Software (Search-based Software Engineering) da UECE
Obtida de "http://pt.wikipedia.org/w/index.php?title=Otimiza%C3%A7%C3%A3o_em_engenharia_de_software&oldid=22363523"

MAIS INFORMAÇÕES DO SETOR DE SOFTWARE

Modelo V

article thumbnail

The V-model of the Systems Engineering Process.[1] O Modelo V é um modelo conceitual de  [ ... ]


Nanomedicina

Nanomedicina é a denominação dada à junção da medicina e da nanotecnologia. Em suma a nanomedi [ ... ]


Microsoft Office

article thumbnail

Microsoft Office Desenvolvedor Microsoft Plataforma x86 e x64 Lançad [ ... ]


Desktop

Desktop, expressão inglesa oriunda de desktop publisher (editor de textos de mesa). São os computa [ ... ]


C♯

article thumbnail


C♯ Paradigma Orientação a objetos
estruturado
imperativo Surgido em 2001  [ ... ]


Modelo Balbúrdia

No início da computação, poucos programadores seguiam algum tipo de metodologia baseando-se, em [ ... ]


Microsoft SharePoint Designer

Microsoft SharePoint Designer Desenvolvedor Microsoft Plataforma x86 e x64  [ ... ]


CMMI

O CMMI (Capability Maturity Model Integration) é um modelo de referência que contém práticas (Ge [ ... ]


web desktop

article thumbnail

Tela do eyeOS 0.9 Um webtop, web desktop, desktop online ou OS online (OS é a sigla para [ ... ]


PDA - Personal digital assistant

article thumbnail


PalmOne LifeDrive Personal digital assistants (PDAs ou handhelds), assistente pessoal di [ ... ]


Software livre nos governos

Nos últimos anos a questão do software livre nos governos está na ordem do dia. Alguns governos c [ ... ]


Banco de dados

article thumbnail

Bancos de dados, ou bases de dados (em Portugal), são coleções de informações que se relacion [ ... ]


Gestão de riscos em segurança

O gerenciamento de riscos em segurança é a essência da segurança corporativa, que atua no sent [ ... ]


Outsourcing

 Outsourcing (em inglês, "Out" significa "fora" e "source" ou "sourcing" significa fonte)  [ ... ]


Smartphone

article thumbnail

Galaxy Nexus, exemplo de Smartphone. Nokia Communicator 9000, 9110, 9210, 9500  [ ... ]


Plone

article thumbnail

Plone

Screenshot da instalação padrão Desenvolvedor Alan Runyan, Alexander L [ ... ]


Hacker

article thumbnail


Originalmente, e para certos programadores, hackers (singular: hacker) são indivíduos que elabo [ ... ]


Sistemas dinâmicos

article thumbnail

O atrator de Lorenz é um exemplo de sistema dinâmico não-linear. O estudo deste sistema incen [ ... ]


Ferramenta CASE

Ferramentas CASE (do inglês Computer-Aided Software Engineering) é uma classificação que abran [ ... ]


ERP

Sistemas Integrados de Gestão Empresarial (SIGE ou SIG), em inglês Enterprise Resource Planning (E [ ... ]


Microsoft Windows

article thumbnail



Último lançamento do Windows, Windows 7, mostrando o seu ambiente de trabalho e me [ ... ]


Modelagem de dados

Modelagem de Dados Representa um conjunto de requerimentos de informações de negócio. É uma part [ ... ]


Licitação

Licitação é o procedimento administrativo para contratação de serviços ou aquisição de pro [ ... ]


Software colaborativo

Software colaborativo (ou groupware) é um software que apoia o trabalho em grupo, coletivamente.  [ ... ]


Inteligência organizacional

Inteligência Organizacional é a capacidade coletiva disponível em uma organização para identifi [ ... ]


Estrutura de dados

article thumbnail

Uma árvore binária é uma estrutura de dados. Na Ciência da computação, uma estrutura  [ ... ]


Steve Jobs

article thumbnail

Steve Jobs Steve Jobs apresentando um iPhone 4 durante a Apple Worldwide Develo [ ... ]


Matriz de interações

article thumbnail

A Matriz de Interações (ou Matriz CRUD) é utilizada, no processo de desenvolvimento de sistemas [ ... ]


NF-e ou Nota fiscal eletrônica

article thumbnail

Pela definição oficial brasileira, uma nota fiscal eletrônica (NF-e) é "um documento de existên [ ... ]


Comércio eletrônico

Comércio eletrônico (português brasileiro) ou comércio electrónico (português europeu) ou e-co [ ... ]


Modelo em cascata

article thumbnail

O modelo em cascata é um modelo de desenvolvimento de software seqüencial no qual o desenvolvime [ ... ]


Desenvolvimento web

article thumbnail

Desenvolvimento web é o termo utilizado para descrever o desenvolvimento de sítios, na Internet  [ ... ]


Melhoria de Processos do Software Brasileiro

O MPS.BR ou Melhoria de Processos do Software Brasileiro é simultaneamente um movimento para a melh [ ... ]


Steve Ballmer

article thumbnail

Steve Ballmer Nome completo Steven Anthony Ballmer Nascimento 24 de Março [ ... ]


EAD - Educação a distância

Tele-educação, Educação a Distância ou Ensino a Distância (EaD) [nota 1] é a modalidade de en [ ... ]


ITIL

Information Technology Infrastructure Library (ITIL) é um conjunto de boas práticas a serem aplica [ ... ]


Microsoft

article thumbnail

Microsoft Microsoft Corporation Logotipo da Microsoft Slogan “We i [ ... ]


Videoconferência

article thumbnail

Videoconferência entre militares em 2006. Videoconferência é uma tecnologia que permite  [ ... ]


Ruby on Rails

article thumbnail

Origem: Wikipédia, a enciclopédia livre. Ruby on Rails

Boas vindas do Rails  [ ... ]


Modelo de entidades e relacionamentos

O modelo de entidades e relacionamentos é um modelo abstrato cuja finalidade é descrever, de man [ ... ]


Sistema Integrado de Aprendizagem de Produtos e Serviços

Sistema Integrado de Aprendizagem de Produtos e Serviços - Sinapse (acrônimo) é o nome de uma met [ ... ]


Miniaturização

Miniaturização é o processo de produção de objetos de consumo cada vez menores (miniaturas), in [ ... ]


Tecnologia da informação

article thumbnail

Mapa com os gastos em TI em todo o planeta Tecnologia da Informação (TI) É a área de  [ ... ]


Matriz de Interações (ou Matriz CRUD)

article thumbnail

A Matriz de Interações (ou Matriz CRUD) é utilizada, no processo de desenvolvimento de sistemas [ ... ]


Struts framework

Struts é um framework de desenvolvimento da camada controladora, numa estrutura seguindo o padrã [ ... ]


Orientação a objetos

A orientação a objetos é um paradigma de análise, projeto e programação de sistemas de softwar [ ... ]


Engenharia de software

Engenharia de software é uma área do conhecimento da computação voltada para a especificação,  [ ... ]


Trac

Trac é uma simples ferramenta, open source e de interface web para controle de mudanças em pro [ ... ]


Sistema de informação contábil

O sistema de informação contábil é um dos componentes do sistema de informação gerencial (SIG, [ ... ]


Zend Framework

article thumbnail

Zend Framework Logotipo do Zend Framework Desenvolvedor Zend Tech [ ... ]


Artigos Relacionados

Pluriverso - Inteligência em Tecnologia

Pluriverso - Inteligência em Tecnologia


Ed.Centro Sul, 2°Andar, SCIA, Qd. 14, Conj. 07, Lt 1, S. Ind.
CEP: 71.250-135, Brasília-DF.  
Como Chegar
| Atendimento  


+55 (61) 4141.5555

Serviços

Desenvolvimento de Software
Oursourcing de T.I
Consultoria em Tecnologia
Licitação com o Governo

Produtos

ERP, CRM, Colaboração
Cloud Computing

Soluções
Soluções em Outsourcing de Tecnologia
Integração de Software
Avaliação de nível tecnológico
Cálculo de custos de T.I
Softwares customizados


Porque escolher a Pluriverso

Blog Corporativo
Blog do Software

Conheça a Pluriverso
quem somos
verticais de atuação
portifólio
casos de sucesso

Atendimento
contatos
sala de imprensa
como chegar
Trabalhe conosco

desenvolvimento de software