SóProvas


ID
2524390
Banca
FCC
Órgão
DPE-RS
Ano
2017
Provas
Disciplina
Engenharia de Software
Assuntos

Considere que em um projeto orientado a objetos há uma classe com cinco métodos. Com base na métrica LCOM − Lack of Cohesion in Methods,

Alternativas
Comentários
  • 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."