• Nenhum resultado encontrado

CAPÍTULO 3 – Abordagens para Monitoração e Recomendação de Ações

3.4 Sistemas de Recomendação

Atualmente os sistemas de recomendação são bastante populares tanto na indústria como na comunidade acadêmica (GUNAWARDANA e SHANI, 2009). Muitas pesquisas têm sido realizadas para desenvolver novas abordagens para sistemas de recomendação e o interesse nessa área ainda continua alto, pois essa é uma área de pesquisa muito rica (ADOMAVICIUS e TUZHILIN, 2005).

Sistemas de recomendação são aplicações de software que visam apoiar os usuários em situações de tomada de decisão, considerando um amplo conjunto de informações (ROBILLARD et al., 2010). Esses sistemas procuram oferecer aos usuários recomendações de itens que eles vão gostar, com base em suas preferências anteriores e informações históricas (FOUSS E SAERENS, 2008). Assim, sistemas de recomendação geralmente possuem três etapas principais: (i) coletar informações importantes sobre os usuários e os itens; (ii) identificar padrões a partir dos dados históricos; e (iii) sugerir itens para os usuários (FOUSS e SAERENS, 2008).

Segundo ADOMAVICIUS e TUZHILIN (2005), os sistemas de recomendação podem ser classificados quanto à abordagem adotada para estimar a utilidade de um dado item e quanto às técnicas de recomendação usadas nessa estimativa. Com relação à abordagem, um sistema de recomendação normalmente pertence a uma das seguintes categorias (ADOMAVICIUS e TUZHILIN, 2005; GUNAWARDANA e SHANI, 2009):

Baseado em conteúdo: a recomendação é baseada em itens semelhantes a

outros itens que já satisfizeram o usuário anteriormente;

Colaborativo: a recomendação é baseada em itens que satisfizeram outros

usuários semelhantes, considerando as preferências e interesses do usuário atual; e,

Híbrido: a recomendação é baseada em uma combinação das abordagens

baseada em conteúdo e colaborativa.

De forma geral, pode-se dizer que a abordagem baseada em conteúdo se preocupa com a similaridade entre os itens (o conteúdo) enquanto a abordagem colaborativa se preocupa com a similaridade entre os usuários.

Com relação às técnicas de recomendação usadas, os sistemas de recomendação podem adotar técnicas baseadas em heurísticas (também conhecidas como baseadas em

memória) ou técnicas baseadas em modelos (ADOMAVICIUS e TUZHILIN, 2005). As técnicas baseadas em modelos são essencialmente heurísticas que estimam a utilidade baseadas em uma coleção de itens previamente avaliados pelos usuários. As técnicas baseadas em modelos usam modelos previamente elaborados para estimar a utilidade dos itens. A principal diferença entre esses dois tipos de técnicas é que as técnicas baseadas em modelos calculam a utilidade usando modelos previamente definidos com base em dados estatísticos ao invés de adotar regras heurísticas ad hoc (ADOMAVICIUS e TUZHILIN, 2005).

Um tipo particular de sistemas de recomendação baseados em conteúdo são os sistemas de recomendação baseados em casos onde cada item é modelado como um caso. Esses sistemas surgiram a partir do Raciocínio Baseado em Casos - RBC e têm sido usados em vários cenários relacionados à solução de problemas (SMYTH, 2007). Segundo RUS e LINDVALL (2002), sistemas baseados em casos capturam experiências dos projetos e provêem conhecimento sobre problemas ocorridos anteriormente.

Recentemente, sistemas de recomendação para apoiarem atividades específicas da engenharia de software têm sido desenvolvidos. Esses sistemas são chamados de Sistemas de Recomendação para Engenharia de Software - SRES (Recommendation

Systems for Software Engineering - RSSE). Um SRES é uma aplicação de software que

provê informações relevantes para uma atividade da engenharia de software em um dado contexto (ROBILLARD et al., 2010).

A literatura descreve vários trabalhos relacionados aos sistemas de recomendação. THIES e ROTH (2010) propõem um sistema de recomendação para renomear variáveis de código Java visando reduzir inconsistências. PEISCHL et al. (2009) apresentam um sistema de recomendação para estimativas de esforço em projetos de software. TRINDADE (2009) apresenta a ferramenta Presley, um sistema de recomendação para identificar e recomendar os especialistas existentes em um projeto àquelas pessoas que buscam por ajuda durante a atividade de codificação, considerando informações contidas nos registros de comunicação dos desenvolvedores e no histórico de alterações dos códigos-fonte. VIRKKI-HATAKKA e RENIERS (2009) propõem a ferramenta Nextcase para apoiar o desenvolvimento de sistemas de recomendação baseados em casos. ROMERO-MARIONA et al. (2008) apresentam um sistema que recomenda a abordagem mais adequada para especificar requisitos de segurança, a partir de características desejáveis informadas pelo usuário.

HAPPEL e MAALEJ (2008) apresentam uma revisão sobre sistemas de recomendação para o desenvolvimento de software discutindo possíveis melhorias e direções para pesquisas futuras sobre esses sistemas. YANG e WANG (2008) apresentam uma abordagem para um sistema de recomendação para planejamento de projetos baseada em RBC e técnicas de mineração de dados. LIU e KE (2007) propõem um sistema de recomendação baseado em mineração de dados para apoiar a solução de problemas na indústria de manufatura. BARBOSA et al. (2007) apresentam o sistema de recomendação MISIR, desenvolvido para apoiar a troca de conhecimento entre pesquisadores e estudantes no contexto de centros de pesquisa. ROCHA (2003) apresenta o sistema de recomendação RecDoc, desenvolvido para uma biblioteca digital virtual na Web, capaz de indicar documentos baseados na própria experiência do usuário, na similaridade entre documentos e na colaboração entre usuários.

Segundo ROBILLARD et al. (2010), atualmente a maioria dos sistemas de recomendação para engenharia de software está relacionada a artefatos usados ao longo do desenvolvimento de software, mais especificamente código-fonte. No entanto, sistemas de recomendação poderiam tratar outros aspectos do desenvolvimento de software, incluindo atividades de monitoração de projetos.

Uma das características mais importantes dos sistemas de recomendação é a capacidade de fazer sugestões realmente interessantes e confiáveis. No entanto, a avaliação de sistemas de recomendação é uma tarefa difícil por diversas razões (HERLOCKER et al., 2004). Nesse contexto, a seção a seguir apresenta uma revisão da literatura sobre avaliação de sistemas de recomendação.

Conforme descrito nessa seção e nas seções anteriores, existem vários trabalhos relacionados a abordagens de monitoração, aprendizado e recomendação descritos na literatura. No entanto, é possível perceber que ainda existem questões a serem respondidas em relação a esses temas tais como: a monitoração contínua nos níveis estratégico, tático e operacional no contexto de software e a execução de ações adequadas para tratar desvios em projetos de software. Algumas questões estão relacionadas a um ambiente para a monitoração de objetivos de software com detecção de desvios e notificação de alertas, de modo a permitir a monitoração nos níveis dos projetos, tático e estratégico de forma integrada. Outras questões a serem respondidas são aquelas que dizem respeito a como armazenar o conhecimento adquirido a partir da execução de ações para tratar desvios, como identificar ações adequadas a determinados cenários e recomendá-las durante a monitoração dos objetivos.

Documentos relacionados