-
O gabarito é a letra C.
Â
Existem algumas métricas que tentam medir a coesão de uma classe. A mais famosa delas é conhecida por LCOM (Lack of Cohesion of Methods) ou, em português, Falta de Coesão dos Métodos. Existem várias versões dessa métricas, mas a ideia geral de todas elas é mais ou menos a mesma.Â
Â
Uma classe é composta por métodos e atributos. Esses métodos tendem a fazer alterações nos valores dos atributos das classes. Sabendo disso, a métrica descobre quantos atributos são modificados por quantos métodos, de maneira independente. A métrica mede quanto uma classe não é coesa. Ou seja, quanto maior o número que a métrica LCOM apontar, menos coesa é a classe.
Â
Â
-
Baseado na afirmação final "quanto maior o número que a métrica LCOM apontar, menos coesa é a classe" do @LucasCosta, a alternativa (b) está correta.
Ou estou enganado?
-
Citação dos 2 autores mais renomados da Engenharia de Software:
Falta de coesão em métodos (lack of cohesion in methods– LCOM).
Cada método dentro de uma classe C acessa um ou mais atributos (também chamados de variáveis de instância). LCOM é o número de métodos que acessam um ou mais dos mesmos atributos. Se nenhum método acessa os mesmos atributos, LCOM = 0. Para ilustrar o caso em que LCOM ≠0, considere uma classe com seis métodos. Quatro dos métodos têm um ou mais atributos em comum (eles acessam atributos comuns). Portanto, LCOM = 4. Se LCOM for alto, métodos podem ser acoplados uns aos outros via atributos. Isso aumenta a complexidade do projeto de classe. Embora haja casos em que um valor alto de LCOM seja justificável, é desejável manter a coesão alta; isto é, manter LCOM baixo.
[PRESSMAN] Engenharia de Software - Uma Abordagem Profissional - 7 Ed (Página 552)
LCOM é calculada considerando os pares de métodos em uma classe. LCOM é a diferença entre o número de pares de métodos sem atributos compartilhados e o número de pares de métodos com atributos compartilhados. O valor dessa métrica tem sido amplamente discutido, e ele existe em diversas variações. Não está claro se realmente adiciona qualquer informação útil além das que já são fornecidas por outras métricas.
[SOMMERVILLE] Engenharia de Software - 9 Ed (Página 470)
-
minha dica: ao invés de ir nos livros dos "papas"
leia este link: http://blog.caelum.com.br/como-medir-a-coesao-lcom/
E NÃo deixe de estudar as outras métricas
2015
A métrica conhecida como resposta para uma classe relaciona o nível de complexidade de uma determinada classe com a quantidade de interações que ela faz com objetos de outras classes.
errada
2014
A medida de complexidade ciclomática é obtida pela contagem de estruturas de seleção e repetição ou pela contagem do número de regiões do grafo de fluxo, tendo a segunda técnica menor precisão que a primeira.
errada
2016
Altos valores na métrica Fan-in são indicativo de que uma função possui acoplamento significativo com o restante do projeto, uma vez que essa métrica conta o número de funções que chamam outras, diferentemente da métrica Fan-out, a qual se centra no número de funções que são chamadas por uma função.
Certa
-
Também estou aqui pensando no erro da B.
-
c-
LCOM - lack of cohesion - é o n° de diferentes metodos de uma classe que referenciam uma variavel de instancia. Quanto mais métodos referenciarem a mesma variavel (atributo da instancia da classe), maior será o LCOM. Por consequencia, um percentual baixo implica alta coesão. Com isso eliminamos letras 'b','d' & 'e'. Se o LCOM for alto, significa que ha mitos metodos referenciando uma certa variavel, op que significa baixa coesao e alto acoplamento. Por essa definição, LCOM aumenta conforme existencia de metodos que usem variavel(eis) em comum. O ideal é deixa-lo o mais baixo possivel.
-
A explicação do erro para a letra B está no rodapé de página.
Engenharia de Software - 8ed - Pressman - Pag. 669
"A métrica LCOM fornece informações úteis em algumas situações, mas pode ser confusa
em outras. Por exemplo, mantendo-se o acoplamento encapsulado (dentro de uma classe),
aumenta-se a coesão do sistema como um todo. Portanto, pelo menos em um sentido im-
portante, LCOM mais alto realmente sugere que uma classe possa ter coesão mais alta, não
mais baixa."