• Nenhum resultado encontrado

5. ABORDAGEM PARA RECOMENDAÇÃO DE MÓDULOS PARA PROJETOS DISTRIBUÍDOS DE LPS

5.2. Recomendação de Módulos

5.2.1. Premissas

Premissa 1. A intensidade de comunicação entre desenvolvedores é diretamente proporcional

à intensidade das dependências entre os componentes de software por eles desenvolvidos. Essa é a premissa fundamental para o desenvolvimento da presente abordagem. Vários estudos atestam essa premissa: em [Grinter 2003] e em [De Souza et al. 2004] é comprovado que dependências entre pedaços de código criam dependências sociais, e em [Sosa, Eppinger et al. 2002] é identificada uma forte correlação entre entidades de software dependentes em um sistema e a freqüência de comunicação entre as equipes que lidam com tais componentes. Por fim, conforme evidenciado em [Ghezzi et al. 2003], quanto mais independentes são os módulos, mais independentemente os desenvolvedores podem proceder com seus trabalhos. Premissa 2. A comunicação entre membros de equipes distintas tende a ser mais dispendiosa

do que entre membros de uma mesma equipe, em particular se as equipes estiverem geograficamente distantes2.

2 No contexto da presente abordagem, é admitido que os membros de uma equipe estão co-localizados, ou seja,

CAPÍTULO 5 – ABORDAGEM PARA RECOMENDAÇÃO DE MÓDULOS PARA PROJETOS DISTRIBUÍDOS DE

LPS 56

A comunicação se apresenta como um dos grandes desafios para a realização de trabalho em grupo devido às diferenças entre as pessoas, não apenas em termos de conhecimento técnico (formação educacional, experiência no domínio do projeto, experiência com plataformas e linguagens de programação), mas de personalidade (temperamento, criatividade, inteligência, valores, dentre outras características psicológicas que determinam os padrões de pensar, sentir e agir do indivíduo). Apesar disso, uma vez que os membros de cada equipe estão co-localizados, estes compartilham o mesmo contexto organizacional e cultural, além de terem maiores possibilidades de conversas informais (não planejadas), fatores que juntos facilitam a comunicação. No entanto, a separação física inerente ao DDS dificulta ainda mais a comunicação em decorrência das diferenças em termos de disponibilidade, recursos (infra-estrutura) e valores sócio-culturais que (possivelmente) passam a existir entre as pessoas nos diferentes locais [Herbsleb 2007].

Premissa 3. A intensidade de comunicação entre desenvolvedores é influenciada pela

quantidade de componentes a serem desenvolvidos.

Considerando que a implementação de componentes é, sobretudo, uma tarefa de desenvolvimento, o volume de trabalho a ser realizado pode ser definido em função da quantidade de componentes a serem desenvolvidos. Nesse sentido, a referida premissa relaciona a intensidade de comunicação entre desenvolvedores com o volume de trabalho a ser realizado em conjunto por eles, independentemente de estarem ou não na mesma equipe. Considerando que a complexidade de uma tarefa aumenta com o seu tamanho [Espinosa et al. 2007], e que tarefas complexas exigem maior interação entre as equipes responsáveis por desenvolvê-las [Silva 2008], é possível concluir que quanto maior o volume de trabalho a ser realizado em conjunto, maior tende a ser a intensidade de comunicação entre os desenvolvedores, em geral.

Além disso, é objetivo da presente estratégia prevenir duas situações extremas: módulos de tamanho máximo (todos os componentes em um único módulo) e módulos de tamanho mínimo (cada componente isolado em um módulo). O primeiro caso seria, teoricamente, a configuração ideal, na qual a dependência interna ao módulo é máxima e a dependência externa, mínima. Contudo, dado que módulos devem ser desenvolvidos por uma única equipe, esse resultado impossibilitaria o desenvolvimento distribuído. O segundo caso seria a pior configuração, na qual a dependência externa aos módulos é máxima e a

CAPÍTULO 5 – ABORDAGEM PARA RECOMENDAÇÃO DE MÓDULOS PARA PROJETOS DISTRIBUÍDOS DE

LPS 57

dependência interna, mínima, o que iria contra as premissas 1 e 2, e invalidaria o objetivo fundamental da estratégia de agrupar componentes em módulos.

5.2.2. Função Objetivo

O algoritmo iterativamente tenta diminuir o valor da função de custo total de comunicação ( ), que pode ser entendida como uma medida da necessidade de comunicação em um projeto. O valor de é calculado como mostrado pela Equação (16), onde é o módulo que contém os componentes e , é o total de componentes em (tamanho do módulo), é o valor da dependência do componente em relação ao componente , é o

número de componentes na DSM e é o valor máximo possível de . O valor de

corresponde ao custo da solução em que todos os componentes estão isolados em

módulos distintos, situação em que todas as dependências são caracterizadas como dependências externas aos módulos, ou em que todos os componentes estão agrupados em um único módulo. (16)

De acordo com a Equação (16), se a solução de agrupamento possui algum módulo que contém ao menos um componente que não possui dependências com nenhum outro componente neste mesmo módulo, o valor do custo total de comunicação recebe o valor de , indicando que a solução é indesejável, uma vez que é contrária à Premissa (1). Caso

contrário, o custo total de comunicação consiste na soma do custo de comunicação introduzido por cada componente individualmente, de acordo com a função de custo de comunicação ( ), estando coerente com a Premissa (1).

Também conforme a Premissa (1), dado um componente ci, o valor de é definido

como sendo diretamente proporcional às dependências deste componente em relação aos demais componentes na DSM, tal como definido pela Equação (17). Nessa equação, é o número de componentes na DSM, é o valor da dependência do componente em

relação ao componente de acordo com a DSM, e o termo representa o peso da dependência entre os componentes e .

CAPÍTULO 5 – ABORDAGEM PARA RECOMENDAÇÃO DE MÓDULOS PARA PROJETOS DISTRIBUÍDOS DE

LPS 58

(17)

O valor de é expresso pela Equação (18), construída em conformidade com as Premissas (2) e (3). Nessa equação, é o tamanho do módulo que contêm os componentes e . Dado que um módulo é desenvolvido por uma única equipe e que dependências entre módulos sinalizam a necessidade de comunicação entre as equipes responsáveis por desenvolvê-los, a idéia da Equação (18) é demonstrar que componentes dependentes que são agrupados contribuem para a redução do valor de . Entretanto, se o tamanho dos módulos for elevado, a dependência interna também o será. De acordo com a Premissa (3), essa situação também influencia a necessidade de comunicação entre desenvolvedores, o que significa que a dependência interna ao módulo pode ser tão prejudicial quanto à existência de dependência externa. Dessa forma, quanto maior o módulo em termos da quantidade de componentes agrupados, maior é o peso da dependência interna ao módulo.

(18)

Documentos relacionados