SóProvas



Questões de Acoplamento e Coesão


ID
28612
Banca
CESGRANRIO
Órgão
DECEA
Ano
2006
Provas
Disciplina
Engenharia de Software
Assuntos

Em relação a projeto estruturado de sistemas, os níveis de coesão, ordenados do melhor para o pior, são:

Alternativas
Comentários
  • Vide um esquema bem-feito pelas profas. Rosangela e Junia que publiquei no meu blog:

    http://svicente99.wordpress.com/2009/08/03/projeto-de-software-guia-para-identificar-nivel-de-coesao/
  • Veja http://www2.dc.ufscar.br/~junia/aula%205 para tentar entender.

ID
70261
Banca
FCC
Órgão
TRT - 3ª Região (MG)
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Considerando o conjunto de tarefas que se relacionam em um módulo e o espectro de medidas da força funcional relativa dos módulos (coesão), a respectiva sequência, da pior para a melhor, é:

Alternativas
Comentários
  • IndesejáveisAcidenta/Coincidental (pior): aleatória e coincidenteLógica: fazem a mesma coisa mesmo diferentes por natureza (agrupamento de rotinas E/S).Temporal: ocorre quando um módulo realiza um conjunto de tarefas que devem ser executadas dentro do mesmo decurso de tempo.IntermediáriasProcedural: seguem uma sequência específica de execução (Ex. uma função que verifica as permissões do arquivo e depois o abre).Comunicação: operam sobre os mesmos dadosSequencial: a saída de uma parte é a entrada de outra parteDesejávelFuncional (melhor): partes de um módulo ou classes são agrupados porque todos contribuem para uma única tarefa definida do módulo.Ordem (melhor para pior): funcional, sequencial, comunicativa, temporal, procedural, lógica, e acidentalhttp://wpjr2.wordpress.com/2008/04/22/
  • Coesão

    coesão é a medida da força relativa de um módulo. Quanto maior for a coesão, menor será o nível de acoplamento de um módulo. A coesão pode se definida como uma medida qualitativa que apresenta os seguintes tipos:

    Acidental (pior): partes de um módulo ou classes são agrupados de forma arbitrária (aleatória), onde as partes não possuem relacionamento relacionado.

    Lógica: partes de um módulo ou classes são agrupados por agrupamento lógico (fazem a mesma coisa), mesmo se estes forem diferentes por natureza (agrupamento de rotinas E/S).

    Temporal: partes de um módulo ou classes são agrupados quando estes forem processados – partes são processadas em um tempo específico na execução do programa (Ex. uma função que será chamada após capturar uma exceção que fecha o arquivo, criar um log de erros e notifica o usuário).

    Procedural: partes de um módulo ou classes são agrupados porque seguem uma sequência específica de execução (Ex. uma função que verifica as permissões do arquivo e após disto abre o mesmo).

    Comunicação: partes de um módulo ou classes sáo agrupados porque operam sobre os mesmos dados (Ex. módulo que opera sobre o mesmo registro de informações).

    Sequencial: partes de um módulo ou classes são agrupados porque a saída de uma parte é a entrada de outra parte, similar à uma linha de montagem (Ex: função que lêe os dados de um arquivo e processa os dados). Sequential cohesion

    Funcional (melhor): partes de um módulo ou classes são agrupados porque todos contribuem a uma única tarefa definida do módulo.

  • Alguma fonte confiável para estudar esse assunto?

  • Gabarito: D

    A coesão é uma propriedade atribuída às características internas de um módulo, classe ou subsistema. As responsabilidades ou funcionalidades que fazem parte de um componente de software são coesos quando possuem um relacionamento direto entre si e entre o propósito do componente. Assim, uma classe com alta coesão possui um propósito claro e bem definido e seus métodos são claramente relacionados a esse propósito. Uma classe com baixa coesão acaba por misturar funcionalidades pouco relacionadas e há significativa diversidade de assuntos sendo trabalhados.

    Existe uma divisão dos tipos de coesão que podem ser encontradas:

    • Coincidental: há nenhuma ou pouca relação entre os elementos parte de um componente;
    • Lógica: há métodos que realizam diversas operações diferentes, selecionadas através de um parâmetro (como um switch/case);
    • Temporal: há um agrupamento de funcionalidades pouco relacionadas mas que devem ser executadas no mesmo momento;
    • Procedimental: os elementos de um componente de software são agrupados de acordo com a familiaridade de algoritmos ou procedimentos;
    • Comunicacional: as operações do componente afetam o mesmo conjunto de dados e/ou produzem um mesmo tipo de saída;
    • Sequencial: as operações são organizadas sequencialmente, com a saída de uma servindo para a entrada de outra;
    • Funcional: todas as operações do componente podem ser descritas por uma única ideia ou conceito.

    Essa lista está partindo da pior forma de coesão (Coincidente) para a melhor (Funcional). Comento abaixo cada uma das alternativas e seus tipos.

    A) ERRADO. A sequência apresentada não segue a ordem da pior para a melhor e sim da melhor para a pior.

    B) ERRADO. Não há a ordem crescente de qualidade dos tipos listados.

    C) ERRADO. O tipo lógico é pior do que o temporal.

    D) CERTO. Essa é uma sequência crescente na qualidade de coesão.

    E) ERRADO. O tipo lógico é o pior entre os listados.


ID
78439
Banca
FCC
Órgão
TRT - 18ª Região (GO)
Ano
2008
Provas
Disciplina
Engenharia de Software
Assuntos

Visando obter maior independência funcional, é adequado que o esforço seja direcionado ao projeto de módulos

Alternativas
Comentários
  • É a medida da “força funcional” relativa de um módulo. Um módulo coeso realiza uma única tarefa dentro de um procedimento de software, requerendo pouca ou nenhuma interação com procedimentos sendo realizados em outras partes de um programa. O ideal é buscar a alta coesão.

ID
79204
Banca
FCC
Órgão
TRT - 18ª Região (GO)
Ano
2008
Provas
Disciplina
Engenharia de Software
Assuntos

No espectro que representa os tipos possíveis de coesão entre tarefas que se relacionam em um módulo, a mais INDESEJÁVEL é a

Alternativas
Comentários
  • IndesejáveisAcidenta/Coincidental (pior): aleatória e coincidenteLógica: fazem a mesma coisa mesmo diferentes por natureza (agrupamento de rotinas E/S).Temporal: ocorre quando um módulo realiza um conjunto de tarefas que devem ser executadas dentro do mesmo decurso de tempo.IntermediáriasProcedural: seguem uma sequência específica de execução (Ex. uma função que verifica as permissões do arquivo e depois o abre).Comunicação: operam sobre os mesmos dadosSequencial: a saída de uma parte é a entrada de outra parteDesejávelFuncional (melhor): partes de um módulo ou classes são agrupados porque todos contribuem para uma única tarefa definida do módulo.Ordem (melhor para pior): funcional, sequencial, comunicativa, temporal, procedural, lógica, e acidentalhttp://wpjr2.wordpress.com/2008/04/22/http://www.ccet.unimontes.br/arquivos/dcc/christine/1071.pdf
  • Uma referência visual do espectro pode ser vista em na página 20 do documento PDF disponibilizado em http://sites.uol.com.br/laudelinobastos/APS2Aula10.pdf
  • Tipos de coesão entre módulos:- Coincidente (pior)- Lógico- Temporal- Procedural- De comunicação- Sequencial- Funcional (melhor)
  • Essas m.e.r.d.a decoreba ainda vale p/ 2019 na edição mais recente do Pressman ?


ID
79207
Banca
FCC
Órgão
TRT - 18ª Região (GO)
Ano
2008
Provas
Disciplina
Engenharia de Software
Assuntos

No projeto de módulos adequadamente estruturados deve-se

Alternativas
Comentários
  • Divisão de DecisãoUma decisão é constituída de duas partes: o reconhecimento da ação a ser tomada e a execução desta ação. Deve-se evitar ao máximo a divisão de decisão. A parte referente a execução da decisão deve ser mantida o mais próximo possível da parte referente ao reconhecimento, a fim de que a informação reconhecida não tenha que percorrer um longo caminho para ser processada (dado migrante).• Escopo de Controle: conjunto formado por um módulo e todos os seus subordinados;• Escopo de Efeito de uma Decisão: conjunto de todos os módulos cujo seu procedimento depende da decisão.É importante que o Escopo de Efeito de uma Decisão de um módulo seja um subconjunto do Escopo de Controle deste módulo. Sempre que esta regra for violada, deve-se elaborar uma nova organização dos módulos com o objetivo de aproximar o reconhecimento da execução.fonte: www.ccet.unimontes.br/arquivos/dcc/christine/1071.pdf
  • Esta eu resolvi por eliminação, da seguinte forma:Letra A) Falsa pois a Máxima do Projetos de Módulos Estruturados deve ser Baixo Acoplamento e Alta Coesão.Letra C) Falsa pois o maior nível de coesão é o funcional e devido à máxima anteriormente citada.Letra D) Falsa pois o maior nível de acoplamento é o por conteúdo e devido à máxima anteriormente citada.Letra E) Falsa pois o maior nível de coesão é o funcional e não a coesão lógica . E, principalmente, devido à máxima anteriormente citada.Logo, resta a letra B.
  • a) buscar evitar buscar o baixo acoplamento.

    b) evitar escopo de efeito de um módulo fora de seu escopo de controle.
    Sempre que possível, o escopo de efeito de um módulo deve estar contido em seu escopo de controle. Desejável que todos os módulos afetados por uma decisão sejam subordinados ao módulo que tomou a decisão. Semelhante a um relacionamento chefe/empregado.

    c) buscar evitar a coesão funcional.
    d) evitar adotar o acoplamento por conteúdo.
    e) evitar adotar a coesão lógica
  • Para matar a questão:
    Acoplamento e coesão são conceitos fundamentais da Engenharia de Software. O livro do Pressman apresenta-os de forma clara e sucinta. Vamos revisá-los.
    Coesão: é a medida da “força funcional” relativa de um módulo. Um módulo coeso realiza uma única tarefa dentro de um procedimento de software, requerendo pouca ou nenhuma interação com procedimentos sendo realizados em outras partes de um programa. O ideal é buscar uma alta coesão.Há vários tipos de coesão, alguns menos desejáveis do que outros.

    Tipos indesejáveis de coesão:
    Coesão coincidental: ocorre quando um módulo realiza um conjunto de tarefas frouxamente relacionadas.
    Coesão lógica: ocorre quando um módulo realiza um conjunto de tarefas que estão relacionadas logicamente. (letra e)
    Coesão temporal: ocorre quando um módulo realiza um conjunto de tarefas que devem ser executadas dentro do mesmo decurso de tempo.

    Tipos intermediários de coesão:
    Coesão procedural: ocorre quando os elementos de processamento do módulo são relacionados e devem ocorrer em uma ordem específica.
    Coesão de comunicação: ocorre quando todos os elementos de processamento do módulo se concentram em uma única área de uma estrutura de dados.

     

     Coesão desejável
    Coesão funcional: quando um módulo realiza uma única tarefa procedural distinta. (letra c)

    Acoplamento: é a medida de interconexão entre módulos em uma estrutura de software. Depende da complexidade de interface entre eles, o ponto no qual a entrada ou referência é feita a um módulo e que dados passam pela interface. O ideal é buscar o mais baixo acoplamento.
    Também, assim como Coesão, há vários tipos de Acomplamento, em diferentes níveis.

    Tipos indesejáveis de Acoplamento:
    Acoplamento comum: quando um conjunto de módulos acessa uma área global de dados
    Acoplamento por conteúdo: ocorre quando um módulo faz uso de estruturas de dados ou de controle mantidas no escopo de outro módulo (letra d)

    Tipo intermediário de Acoplamento:
    Acoplamento por controle: quando módulo passa decisões de controle a outro módulo

    Tipo desejável de acoplamento:
    Acomplamento de dados: ocorre quando apenas uma lista de dados simples é passada como parâmetro de um módulo para o outro, com uma correspondência um-para-um de itens.


ID
102289
Banca
CESPE / CEBRASPE
Órgão
TCU
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Julgue os itens subsequentes, relativos às as métricas de software, medições que se referem a um sistema, processo ou documentação,
e que, aliadas aos padrões, auxiliam na qualidade do software.

A métrica de acoplamento e coesão analisa o grau de dependência entre componentes de um programa. Em um projeto de software, buscam-se um baixo grau de acoplamento e um alto grau de coesão. A medida fan-in, que mede o grau de acoplamento, indica quantos módulos controlam diretamente determinado módulo; desse modo, um valor baixo de fan-in indica que uma função Y está estreitamente acoplada ao restante do projeto.

Alternativas
Comentários
  • Erro está na afirmação do baixo número de fan in.

    http://www.aivosto.com/project/help/pm-sf.html

    SFIN and reuse

    A SFIN value of 2 or more indicates reused code. The higher the fan-in, the more reuse.

    A high SFIN is desirable for procedures because it indicates aroutine that is called from many locations. Thus, it is reused, whichis usually a good objective.

    A high SFIN is not as desirable for a file. While it can indicategood reuse, it also represents a high level of cross-file coupling.SFIN for a file should be "reasonable". We leave the definition of"reasonable" to be determined case by case.

  • Medida de acoplamento
     
    Existem várias formas de acoplamento. Uma métrica de acoplamento pode ser definida pelo número de tipos utilizados por uma classe ou função. 
    Tipos básicos como inteiros não são levados em consideração.
     
    Por exemplo:
     
    void F(X x, Y y)
    {
      int i = 0;
      Z z = x.z;
      ...
    }
    Neste caso o número de acoplamento de F é 3 pois usa os tipos X, Y e Z.
     
    O valor de acoplamento para cada classe também deve ser levado em consideração. Neste exemplo e nos próximo o acoplamento indireto é 0 somente para facilitar.
  • Estreitamente acoplado => muito acoplado.
    Fain-in baixo => pouco acoplado
    Fan-in => mede o numero de funções que chamam uma determinada função. 
  • Acredito que o erro esteja relacionado a frase "uma função Y está estreitamente acoplada ao restante do projeto". Pelo que eu entendi o fan-in mede o quanto uma função é reutilizada dentro do projeto e não o acoplamento dela. O acoplamento está relacionado conceito de fan-out.


ID
104773
Banca
FCC
Órgão
TCM-PA
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

Extensão natural do conceito de ocultação de informações, que diz: "um módulo deve executar uma única tarefa dentro do procedimento de software, exigindo pouca interação com procedimentos que são executados em outras partes de um programa", é o conceito de

Alternativas
Comentários
  • Desde quando???Aternativa A é a correta.
  • O item E está errado. O conceito apresentado é o de coesão e não recursividade. Recursividade é quando uma definição baseia-se nela mesma, como é o caso da série de Fibonacci, onde o próximo termo depende do anterior. Caso a alternativa certa mostrada seja a (E), então o gabarito está se baseando na prova de Técnico de Controle Externo do TCM-PA e não na de Técnico de Informática, cujo gabarito oficial aponta a alternativa (A) como resposta da questão 65 da prova. Veja em (http://www.questoesdeconcursos.com.br/prova/arquivo_gabarito/1445/fcc-2010-tcm-pa-tecnico-em-informatica-gabarito.pdf)
  • questão pra recurso! O conceito apresentado é de coesão e não recursividade....

  • Ok, pessoal!

    Gabarito corrigido.

    A resposta é alternativa "A".

    Bons estudos!

  • cabe recurso pois a resposta certa é visibilidade e não coesão.

    "Normalmente, o escopo é utilizado para definir o grau de ocultação da informação, isto é, a visibilidade e acessibilidade das variáveis em diferentes partes do programa".

    http://www.decom.ufop.br/romildo/bcc221.2011-1/Introducao_OO_6.pdf 
  • Diego você está enganado. A questão não fala em momento algum de visibilidade ela fala de uma aplicação coesa. 
  • Retirado do livro do PRESSMAN, página 193, Capítulo 9 - Engenharia de projetos na seção 9.3.6 - Independência Funcional:
    "... Coesão é uma extensão natural do conceito de ocultamento de informação descrito na Seção 9.3.5". Um módulo coeso realiza uma única tarefa, requerendo pouca interação com outros componentes em outras partes do programa. Dito simplesmente, um módulo coeso deveria (idealmente) fazer apenas uma coisa.
    Ou seja, gabarito correto!
    Abraços

ID
104956
Banca
FCC
Órgão
TRE-AM
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

Considere os níveis de coesão entre tarefas de um módulo no espectro de Pressman que são: Procedimental (PR), Coincidental (CD), Temporal (TP), Lógico (LG), Funcional (FU), Sequencial (SE) e Comunicacional (CM). A recomendação para obtenção de módulos com um só propósito, iniciando com a pior solução e caminhando para a melhor, no espectro, é dada pela sequência:

Alternativas
Comentários
  • Coesão é uma medida da força de associação dos elementos dentro de um módulo. Por elemento, entende-se uma instrução, atividades (comandos) de um módulo, um grupo de instruções ou uma chamada para um outro módulo, ou seja, qualquer parte de codificação que executa alguma instrução. Portanto, o ideal são módulos altamente coesos, cujos elementos estejam genuinamente relacionados, facilitando a sua reutilização. A tabela abaixo mostra a classificação dos tipos de coesões existentes:

    Tipo de coesão Característica Classificação
    Funcional Contém elementos que contribuem para a execução de uma, e apenas uma, tarefa relacionada ao problema. Melhor
    Sequencial Elementos estão envolvidos em atividades tal que os dados de saída de uma atividade servem como dados de entrada para a próxima.
    Comunicacional Elementos contribuem para atividades que usem a mesma entrada ou a mesma saída.
    Procedural Elementos estão envolvidos em atividades diferentes e possivelmente não relacionados, nas quais o controle flui de uma atividade para outra.
    Temporal Elementos envolvidos em atividades que estão relacionadas no tempo.
    Lógica Elementos contribuem para atividades da mesma categoria geral, onde a atividade ou atividades a serem executadas são selecionadas fora do módulo.
    Coincidental Elementos contribuem para atividades sem relação significativa entre si. Pior
  • Níveis de coesão entre tarefas de um módulo no espectro de Pressman, e caminhando da pior proposição para a melhor é:

    CD-LG-TP-PR-CM-SE-FU.

    Onde,

    Procedimental(PR), Coincidental (CD), Temporal (TP), Lógico (LG), Funcional (FU),Sequencial (SE) e Comunicacional (CM).

    Será que algo pode nos ajudar? …... Claro!

    Mnemonio!Hahahaha

    CoinciDentemente, LiGuei a TemPo PRa um Colega Meu, pois ele Se-Fu.


  • Essa eu acertei, pq sei que os ultimos sempre tendem a SE FU...

    Sacaram né...rsrs


ID
118816
Banca
FCC
Órgão
TRT - 20ª REGIÃO (SE)
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

No desenvolvimento de sistemas, no âmbito das relações intermodulares entre as classes, diz-se que o programa está bem estruturado quando há

Alternativas
Comentários
  • A questão está com o gabarito errado.  A resposta correta é a letra 'D'.  maior coesão e menor acoplamento.
  • Ok, pessoal!

    Gabarito corrigido.

    Bons Estudos!

  • Questão grátis =D!

  • d-

    coesão significa responsabilidades distintas, mas complementares. Uma classe "cliente"nao deve depender da classe "fatura", mas ambas fazem sentido ao trocar mensagens entre si. Acoplamento implica dependencia estrutural, o que ocorre quando um objeto incorpora elementos de outros para usa-lo em seus metodos. mudanças em 1 implica em outro(s). Uma possivel solução seria o design pattern CDI (context and dependency injection)


ID
148072
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

O escopo de efeito de um módulo está fora do alcance de controle desse módulo quando o

Alternativas
Comentários
  • Encontrei esta definição, mas sem link para a fonte.
    Alguém tem mais informação sobre o tema?


    Divisão de Decisão


    Uma decisão é constituída de duas partes: o reconhecimento da ação a ser tomada e a execução desta ação. Deve-se evitar ao máximo a divisão de decisão. A parte referente a execução da decisão deve ser mantida o mais próximo possível da parte referente ao reconhecimento, a fim de que a informação reconhecida não tenha que percorrer um longo caminho para ser processada (dado migrante).


    • Escopo de Controle: conjunto formado por um módulo e todos os seus subordinados;


    • Escopo de Efeito de uma Decisão: conjunto de todos os módulos cujo seu procedimento depende da decisão.


    É importante que o Escopo de Efeito de uma Decisão de um módulo seja um subconjunto do Escopo de Controle deste módulo. Sempre que esta regra for violada, deve-se elaborar uma nova organização dos módulos com o objetivo de aproximar o reconhecimento da execução.

  • Só pra completar o comentário anterior, que disse não conhecer a fonte.
    Isso é da 5ª edição do livro de pressman (ou seja, é meio antigo).

    "Keep the scope of effect of a module within the scope of control of that module.
    The scope of effect of module e is defined as all other modules that are
    affected by a decision made in module e. The scope of control of module e is
    all modules that are subordinate and ultimately subordinate to module e."
  • Achei o comentário dessa questão no TImasters:

     

    Fazendo uma analogia, os módulos nos níveis superiores são os chefes. Eles
    tomam as decisões. Os módulos nos níveis inferiores são os empregados. Eles
    recebem instruções dos chefes e fazer o trabalho. Os empregados não deviam
    dizer aos chefes o que fazer.

    (A) O escopo de efeito de um módulo está fora do alcance de controle desse
    módulo quando o efeito da decisão é hierarquicamente superior à decisão.

    Se o efeito da decisão é deixar o café na mesa do chefe, já não está mais na
    mão do empregado o que o chefe vai fazer com o café ou se o chefe vai
    considerar o empregado um puxa ou fiel. CERTO

    (B) O escopo de efeito de um módulo está fora do alcance de controle desse
    módulo quando o efeito da decisão é subordinado à decisão.

    Se o efeito da decisão é subordinado então o controle ainda é do chefe. Vai
    buscar um café. O cara entrega o café e o chefe manda pegar outro porque
    aquele está frio. O chefe ainda está sob o controle. ERRADO

    (C) O escopo de efeito de um módulo está fora do alcance de controle desse
    módulo quando o escopo do acoplamento entre suas tarefas ocorre por
    intermédio de dados.

    Conforme a estorinha do começo, isso não determina a perda do controle. O
    chefe pode entregar o relatório pra um subordinado ou pra um superior a ele.
    Somente no primeiro caso ele ainda detem o controle. ERRADO

    (D) O escopo de efeito de um módulo está fora do alcance de controle desse
    módulo quando o escopo do acoplamento entre suas tarefas ocorre por
    intermédio de conteúdo.

    Mesmo caso da C. Se o acoplamento ocorrer por conteúdo não é determinante
    para a situação de hierarquia. ERRADO

    (E) O escopo de efeito de um módulo está fora do alcance de controle desse
    módulo quando o efeito da coesão entre suas tarefas tem escopo funcional.

    Também não determina a hierarquia entre os módulos a forma que ocorreu a
    coesão. ERRADO

     

    Vale a pena conferir na integra, segue o link https://groups.google.com/forum/#!topic/timasters/thu0M5E4FNY


ID
148075
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Dentro do espectro de coesão entre tarefas de um módulo é menos indicado usar a

Alternativas
Comentários
  •  http://waltercunha.com/blog/index.php/2009/07/05/padroes-de-projeto-parte-2-de-3/

  • Nesse caso era só saber que a melhor coesão possível é a coesão funcional. Qualquer outra é menos indicada que ela.

    Ordem de coesão do mais baixo para o mais alto:
    1) Coincidental
    2) Lógico
    3) Temporal
    4) Procedimental
    5) Comunicacional
    6) Sequencial
    7) Funcional
  • Mnemônico:

    COINCIDENTemente a 

    LÓGICA

    TEMPORAL

    PROCEDe a

    COMUNICAção numa

    SEQUÊNCIA

    FUNCIONAL


ID
148384
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Um módulo que executa um conjunto de tarefas que se relacionam frouxamente entre si, ou nem se relacionam, é denominado

Alternativas
Comentários

ID
148759
Banca
FCC
Órgão
TJ-SE
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Em uma faculdade, o professor queria testar o conhecimento de seus alunos/técnicos, então ele deu as seguintes ordens (algumas contraditórias):

? Todos os módulos agora devem

I. ser construídos com alto acoplamento de dados entre si e coesão comunicacional entre seus elementos internos;
II. ter suas estruturas construídas com seu escopo de efeito dentro de seu escopo de controle;
III. ser construídos com alto acoplamento de controle entre si e coesão lógica entre seus elementos internos;
IV. ser construídos com baixo acoplamento de dados entre si e coesão funcional entre seus elementos internos.

Considerando as regras de programação estruturada, a estrutura de módulos mais adequada foi acertada por quem, de acordo com a ordem, projetou APENAS as ordens

Alternativas
Comentários
  • II. ter suas estruturas construídas com seu escopo de efeito dentro de seu escopo de controle;

    Alguém poderia explicar?
  • Também não entendi nada. O que seria um escopo de efeito ???
  • Divisão de Decisão
    Uma decisão é constituída de duas partes: o reconhecimento da ação a ser tomada e a execução desta ação. Deve-se evitar ao máximo a divisão de decisão. A parte referente a execução da decisão deve ser mantida o mais próximo possível da parte referente ao reconhecimento, a fim de que a informação reconhecida não tenha que percorrer um longo caminho para ser processada (dado migrante).

    • Escopo de Controle: conjunto formado por um módulo e todos os seus subordinados;

    • Escopo de Efeito de uma Decisão: conjunto de todos os módulos cujo seu procedimento depende da decisão.

    É importante que o Escopo de Efeito de uma Decisão de um módulo seja um subconjunto do Escopo de Controle deste módulo. Sempre que esta regra for violada, deve-se elaborar uma nova organização dos módulos com o objetivo de aproximar o reconhecimento da execução.

    fonte: www.ccet.unimontes.br/arquivos/dcc/christine/1071.pdf

  • Uma observação nessa questão.
    se verificarmos a opção 4:
    IV. ser construídos com baixo acoplamento de dados entre si e coesão funcional entre seus elementos internos.
    podemos ser levado ao erro se nao prestarmos ateção quando ele dizer "
    coesão funcional entre seus elementos internos."
    se ler com pressa, veremos que deve haver baixo acoplamento e baixa coesão, mas na verdade, a coesão funcional sim é que é a melhor coesão e não TER BAIXA COESÃO.

  • Obrigado por deixar "ordens" no plural, banca!


ID
150319
Banca
FCC
Órgão
TJ-PA
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Um produto direto da modularidade e dos conceitos de abstração e ocultação de informações é o conceito de

Alternativas
Comentários
  • Mais informações sobre os conceitos: http://www.inf.ufes.br/~falbo/files/Notas_Aula_Projeto_Sistemas.pdf

  • Independência funcional: é um resultado direto da separação por interesses e da modularidade e dos conceitos de abstração e encapsulamento de informações

    Alternativa: B


ID
150322
Banca
FCC
Órgão
TJ-PA
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Considere as afirmativas abaixo.

I. A mais adequada coesão entre tarefas de um módulo é a sequencial.

II. É mais adequado o acoplamento por controle entre módulos do que nenhum acoplamento direto.

III. O baixo acoplamento entre módulos resulta em menor propensão a efeitos de propagação.

De acordo com as recomendações da Engenharia de Software quanto à melhoria da qualidade dos projetos, é correto o que se afirma APENAS em

Alternativas
Comentários
  • I. A mais adequada coesão entre tarefas de um módulo é a sequencial. O correto seria Funcional.

    II. É mais adequado o acoplamento por controle entre módulos do que nenhum acoplamento direto.
    Não entendi.
    A ordem de acoplamento, do menos pior para o pior é (por): mensagem, dados, controle, variáveis globais/internas.
    Alguém poderia explicar???


    III. O baixo acoplamento entre módulos resulta em menor propensão a efeitos de propagação.  Correto.
  • II. É mais adequado o acoplamento por controle entre módulos do que nenhum acoplamento direto.

    Se inverter a ordem da afirmação, contrariando o que foi dito na alternativa, estará correto: É mais adequado nenhum acoplamento direto do que acoplamento por controle entre módulos.

    ou seja, se a negativa está correta, o que está escrito no item II está incorreto.
  • Tem a resolução dessa questão aqui: http://waltercunha.com/blog/index.php/2009/07/05/padroes-de-projeto-parte-2-de-3/
  • I. A mais adequada coesão entre tarefas de um módulo é a sequencial. (ERRADO é a funcional)

    II. É mais adequado o acoplamento por controle entre módulos do que nenhum acoplamento direto. (ERRADO, pois é mais adequado não ter acoplamento)

    III. O baixo acoplamento entre módulos resulta em menor propensão a efeitos de propagação.  (CORRETO)


ID
163039
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

Tanto no paradigma orientado a objetos quanto no paradigma estruturado, existem diversas técnicas úteis para averiguar se um sistema de software foi bem projetado. No primeiro, essas medidas são aplicáveis a classes, e no segundo, são aplicáveis a módulos. Quais, dentre os termos apresentados a seguir, são medidas de qualidade de projeto aplicáveis em ambos os paradigmas?

Alternativas
Comentários
  •  

    • a) Fan-in, fan-out e herança. (Herança só existe no paradigma OO)
    • b) Encapsulamento, herança e coesão. (Herança e encapsulamento só existem no paradigma OO)
    • c) Coesão, acoplamento e polimorfismo. (Polimorfismo só existe no paradigma OO)
    • d) Fan-in, fan-out e acoplamento. Ok
    • e) Coesão, acoplamento e polimorfismo. (Polimorfismo só existe no paradigma OO)
  • Fan-in/Fan-out é uma métrica de produto de software.

    Segundo Sommerville é isso aí oh:

    Fan-in é uma medida do número de funções ou métodos que chamam alguma outra função ou método(digamos X). Fan-out é o número de funções chamadas pela função X. Um  valor alto para Fan-in significa que X está firmemente acoplado com o resto do projeto, e mudanças em X terão grande impacto. Um valor alto para Fan-out sugere que a complexidade geral de X pode ser alta devido à complexidade da lógica de controle necessária para coordenar os componentes chamados.
    Em modelos orientados a objeto é essencialmente a mesma coisa. Contudo, pode ser apropriado fazer uma distinção entre chamadas de outros métodos dentro do objeto e chamadads com base em métodos externos.
  • Ainda não tinha ouvido falar em fan-in e fan-out, resolvi a questão por eliminação.
    Herença e polimorfismo só podem ser aplicados a classes, a questão pede o que pode ser aplicado a ambos, só restou a letra D.
  • Gente, as alternativas C e E são idênticas! Alguém sabe se caiu assim na prova?

  • Questão deveria ser anulada! 02 Alternativas identicas? Wattahell


ID
183718
Banca
FCC
Órgão
TRE-RS
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

Considere:

I. Acoplamento entre módulos em uma estrutura de software.

II. Coesão entre tarefas que se relacionam em um módulo.

Considerando os espectros mais aceitos na programação estruturada (por ex. Pressman), a mais adequada escolha é

Alternativas
Comentários
  • Todo sistema é composto por subsistemas.

    O acoplamento é a medida de inter-dependencia entre subsistemas, digamos, a medida de inter-dependência entre as classes, se for orientado a objeto.

    Já a coesão seria a medida de força de intra-subsistemas, ela mede o quanto um subsistema está focado em uma responsabilidade.

    Quando menor o acoplamento, melhor.

    Quanto maior a coesão, melhor.

    Acomplamento, do menos pior até o pior,:

    por Mensagem
    por Dados
    por Controle
    por Dados Globais
    por Dados Internos


    Coesão, da melhor para a mais fraca:

    Funcional
    Sequêncial
    Comunicacional
    Procedural
    Temporal
    Lógica
    Conincidental



  • Tipos indesejáveis de coesão:
    Coesão coincidental: ocorre quando um módulo realiza um conjunto de tarefas frouxamente relacionadas.
    Coesão lógica: ocorre quando um módulo realiza um conjunto de tarefas que estão relacionadas logicamente.
    Coesão temporal: ocorre quando um módulo realiza um conjunto de tarefas que devem ser executadas dentro do mesmo decurso de tempo.

    Tipos intermediários de coesão:
    Coesão procedural: ocorre quando os elementos de processamento do módulo são relacionados e devem ocorrer em uma ordem específica.
    Coesão de comunicação: ocorre quando todos os elementos de processamento do módulo se concentram em uma única área de uma estrutura de dados.

    Coesão desejável
    Coesão funcional: quando um módulo realiza uma única tarefa procedural distinta.
     
    Tipos indesejáveis de Acoplamento:
    Acoplamento comum: quando um conjunto de módulos acessa uma área global de dados
    Acoplamento por conteúdo: ocorre quando um módulo faz uso de estruturas de dados ou de controle mantidas no escopo de outro módulo

    Tipo intermediário de Acoplamento:
    Acoplamento por controle: quando módulo passa decisões de controle a outro módulo
     
    Tipo desejável de acoplamento:
    Acomplamento de dados: ocorre quando apenas uma lista de dados simples é passada como parâmetro de um módulo para o outro, com uma correspondência um-para-um de itens.
    Logicamente, o ideal é que não hava acoplamento direto. Porém, caso não seja possível, o melhor é ter o acoplamento de dados.

    Fonte:http://waltercunha.com/blog/index.php/2009/07/05/padroes-de-projeto-parte-2-de-3/
     
  • Segundo Meilir Page Jones:

     

    Acoplamento

    Bom ou Solto

    . Acoplamento de Dados: comunicação por parâmetros.

    . Acoplamento de Imagem: referenciam a mesma estrutura de dados.

    . Acoplamento de Controle: um controla a lógica do outro.

    . Acoplamento Comum: referenciam a mesma área de dados.

    . Acoplamento de Conteúdo: um referencia o interior do outro.

    Ruim ou Rígido

     

    Coesão

    Melhor Manutenibilidade

    . Funcional: função com responsabilidade bem definida.

    . Seqüencial: seqüência de funções onde a saída de uma será entrada de outra.

    . Comunicacional: funções que usam a mesma entrada ou possuem a mesma saída.

    . Procedural: módulos compostos por funções pouco relacionadas entre si.

    . Temporal: atividades que estão relacionadas no tempo.

    . Lógica: módulos que possuem a mesma característica geral.

    . Coincidental:módulos cujos elementos contribuem para atividades sem relacionamento.

    Pior Manutenibilidade 

  • Cada autor fala uma coisa, não tem um consenso?

    Coesão Pressman 6ª Edição, PT, p. 247
     
    utilidade (coincidental), temporal, procedimental, sequencial, comunicacional,  em camada, funcional

    Acoplamento  Pressman 6ª Edição, PT, p. 249
     
    conteúdo (Interno), comum (Global), dados (Data), carimbado (Stamp), tipo, chamada de rotina (Mensagem), importação, externo. Aqui no acoplamento ele não cita qual é bom ou ruim.

    O que faz mas sentido para mim,  Meilir Page Jones http://c2.com/cgi/wiki?CouplingAndCohesion
     

    Cohesion (interdependency within module) strength/level names : (from worse to better, high cohesion is good)

    - Coincidental Cohesion : (Worst) Module elements are unrelated
    - Logical Cohesion : Elements perform similar activities as selected from outside module, i.e. by a flag that selects operation to perform (see also CommandObject).
    i.e. body of function is one huge if-else/switch on operation flag
    - Temporal Cohesion : operations related only by general time performed (i.e. initialization() or FatalErrorShutdown?())
    - Procedural Cohesion : Elements involved in different but sequential activities, each on different data (usually could be trivially split into multiple modules along linear sequence boundaries)
    - Communicational Cohesion : unrelated operations except need same data or input
    - Sequential Cohesion : operations on same data in significant order; output from one function is input to next (pipeline)
    - Informational Cohesion: a module performs a number of actions, each with its own entry point, with independent code for each action, all performed on the same data structure. Essentially an implementation of an abstract data type.
    i.e. define structure of sales_region_table and its operators: init_table(), update_table(), print_table()
    - Functional Cohesion : all elements contribute to a single, well-defined task, i.e. a function that performs exactly one operation
    get_engine_temperature(), add_sales_tax()
     
     Coupling (interdependence between modules) level names: (from worse to better, high coupling is bad)

    - Content/Pathological Coupling : (worst) When a module uses/alters data in another
    - Control Coupling : 2 modules communicating with a control flag (first tells second what to do via flag)
    - Common/Global-data Coupling : 2 modules communicating via global data
    - Stamp/Data-structure Coupling : Communicating via a data structure passed as a parameter. The data structure holds more information than the recipient needs.
    - Data Coupling : (best) Communicating via parameter passing. The parameters passed are only those that the recipient needs.
    - No data coupling : independent modules.
  • O principal nesta questão é você saber que é possível escrever uma classe sem nenhum grau de acoplamento, ou seja, sem qualquer ligação com outra classe ou com o mundo externo, mas não é possível escrever uma classe sem nenhum grau de coesão, pois o grau mínimo de coesão é coesão funcional.

ID
320773
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

A coesão e o acoplamento são formas de se avaliar se a segmentação de um sistema em módulos ou em componentes foi eficiente. Acerca da aplicação desses princípios, assinale a opção correta.

Alternativas
Comentários
  • a) O baixo acoplamento pode melhorar a manutebilidade dos sistemas (certo), pois ele está associado à criação de módulos como se fossem caixas-pretas. Esta explicação não justifica a afirmação anterior.

    b) Os componentes ou os módulos devem apresentar baixa   alta coesão e um alto baixo grau de acoplamento.

    c) Os componentes ou os módulos devem ser fortemente coesos e fracamente acoplados. (certo)

    d) Um benefício da alta coesão é permitir realizar a manutenção em um módulo sem se preocupar com os detalhes internos dos demais módulos.
    Qual o erro desta opção???

    e) A modularização do programa em partes especializadas pode aumentar a qualidade desses componentes, mas pode prejudicar facilitar o seu reaproveitamento em outros programas.
  • d) Um benefício da alta coesão é permitir realizar a manutenção em um módulo sem se preocupar com os detalhes internos dos demais módulos.
     "do baixo acoplamento".
  • "Um benefício da alta coesão é permitir realizar a manutenção em um módulo sem se preocupar com os detalhes internos dos demais módulos."

    seria mais correto dizer:
    do baixo acoplamento
    se preocupando menos
  • Uma excelente questão, o fato de haver uma alta coesão, não impede que haja um alto acoplamento, ou seja, mesmo com alta coesão, devemos sim, dependendo do acoplamento se preocupar com os detalhes internos dos demais módulos.

  • Também não entendi qual o erro da alternativa D


ID
352549
Banca
FUNCAB
Órgão
SES-GO
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

O princípio de engenharia de software que mede o quanto dois módulos de um programa (ou classes e métodos) se encontram conectados, é conhecido como:

Alternativas
Comentários
  • c-

    Quanto maior o acoplamento, maior sera a interdependencia entre os modulos. Alterações em um implica alterações no outro. Metricas de projeto ajudam a determinar o grau dessa interdependencia. As metricas de projeto mais conhecidas sao

     

    1- contagem de metodos - classes com menos metodos sao mais reutilizaveis

    2- WMC - weighted methods per class - somam-se metodos a suas complexidades ciclomaticas.

    3- RFC - response for a class - metodos chamados para uma mensagem de objeto ou outro metodo da classe. Quanto maior, mais complexo o teste

    4- DIT - Depth of inheritance tree - 2-3: reutilização ideal. >2:  orientação a obj e herança subexplorados. > 5: muito complexo

    5- NOC - number of children - indica influencia da classe no projeto

    6- LCOM - lack of cohesion - n° metodos que referenciam uma mesma variavel. quanto menos, maior coesão

    7- Utilização global - n° de variavel globais

    8- CBO - coupling between object classes - n° de classes acopladas a uma classe especifica.


ID
362011
Banca
FUNRIO
Órgão
FURP-SP
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

Relacione os tipos de Acoplamento com sua definição:

1) Comum
2) Dados
3) Conteúdo
4) Controle

( ) Ocorre quando um componente modifica dados internos de outro
( ) Ocorre quando uma operação A invoca outra B passando um sinal de controle para B que ira dirigir o seu fluxo lógico.
( ) Ocorre quando vários componentes fazem uso de uma mesma variável global.
( ) É quando operações passam longas cadeias como argumento de dados.

Alternativas
Comentários
  • Conteúdo: Ocorre quando um componente modifica dados internos de outro.
    Controle: Ocorre quando uma operação A invoca outra B passando um sinal de controle para B que ira dirigir o seu fluxo lógico. 
    Comum: Ocorre quando vários componentes fazem uso de uma mesma variável global. 
    Dados: É quando operações passam longas cadeias como argumento de dados.

     


ID
384427
Banca
FCC
Órgão
TRT - 7ª Região (CE)
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

No projeto de software, excetuando-se o acoplamento direto entre módulos, o seguinte no espectro (PRESSMAN) e o mais baixo desejado possível é o acoplamento

Alternativas
Comentários
  • Em desenvolvimento de software é desejado ter o menor nível de Acomplamento. Os acomplamentos são classificados em:
    1. Baixo Acomplamento - Quando a interface entre os módulos se faz através de passagem de dados.

    2. Acoplamento moderado: Quando a interface entre os módulos é feita por controle.

    3. Acoplamento elevado: Quando o módulo está ligado a ambiente externos ou ainda, quando o módulo utiliza variavies globais. 
  • Os níveis de acoplamento referidos não questão não tem nada a ver com o comentário acima.
    Os níveis referidos são, do mais baixo ao mais alto:

    1. Por Dados;
    2. Por Imagem;
    3. Por Controle;
    4. Externo;
    5. Comum;
    6. Por Conteúdo.
  • Tipos de Acoplamento:

    Conteúdo (alto): quando um módulo ou classe altera ou depende de uma funcionalidade interna de outro módulo (Ex. acessando dados locais de um módulo). Uma alteração no modulo de serviço acarretará alterações no módulo dependente.

    Comum: quando dois módulos ou classes compartilham os meswmos dados globais (Ex. uma variável global). Mudanças nos recursos compiartilhados implicará mudanças em todos os módulos que os utilizam.

    Externo: quando dois módulos ou classes compartilham um formato de dados externo, protoloco de comunicação ou interface de dispositivo (Ex XML, HTTP).

    Controle: quando um módulo ou classe controla a lógica de outro, passando informações de que operações executar.

    Selo (dados estruturados): quando módulos ou classes compartilham uma estrutura de dados composta e utilizam apenas uma parte da mesma, possivelmente partes diferentes.

    Dados: quando módulos ou classes compartilham dados via parâmetros. Cada parâmetro é uma parte elementar, send esta o unico dado compartilhado entre módulos ou classes (Ex. passando um inteiro para uma função que calcula aus raiz quadrada

    Mensagem (baixa): provê a menor acoplagem onde módulos ou classes não possuem dependências entre si. Ao invés, utilizam uma interface pública para a troca de mensagens ou eventos
  • Os níveis de acoplamento, segundo Pressman, do mais baixo ao mais alto:
    1.Por Dados;
    2. Por Imagem;
    3. Por Controle;
    4. Externo;
    5.Comum;
    6. Por Conteúdo.Será que algo pode nos ajudar? …... Claro! Mais uma vez!

    Mnemônio!Hahahaha

    Dados,nas imagens de controle externo, são comuns ao conteúdo.

    Ou, "DICEDP", Ache o melhor e leve para a prova.


  • Obrigada, Fábio!! Show seus mnemônicos !!!


ID
613159
Banca
CESPE / CEBRASPE
Órgão
BRB
Ano
2011
Provas
Disciplina
Engenharia de Software
Assuntos

A respeito de programação orientada a objetos, julgue os itens de
86 a 88.

Para que a interface pública de uma classe seja considerada coesa, é necessário que todos os recursos dessa interface estejam relacionados ao conceito que a classe representa.

Alternativas
Comentários
  • Coesão refere-se a fazer somente aquilo que se propõe, neste caso, os recursos da interface precisam estar relacionados ao que ela propoe.
  • Coesão é justamente isso, as responsabilidades da classe serem relacionadas
    estritamente ao que a classe representa. Qualquer coisa que uma classe faça
    que não deveria ser função dela a torna menos coesa.
  • Prezados,

    A coesão é o grau com o qual um módulo tem uma responsabilidade única e definida. O acoplamento é o grau com o qual um módulo depende de outros módulos para o seu funcionamento. 

    Portanto a questão é correta.


ID
770086
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca de coesão e acoplamento, elementos críticos para o
desenvolvimento e manutenção de sistemas, julgue os itens que se
seguem.

De acordo com o princípio da coesão de classes, cada classe deve representar uma única entidade bem definida no domínio do problema. O grau de coesão diminui com o aumento contínuo de código de manutenção nas classes.

Alternativas
Comentários
  • Essa questão está errada.
    Quando se fala em domínio do problema, está se falando da análise do problema, que, quando for feito projeto da solução, uma entidade poderá virar mais de uma classe. Portanto, uma entidade pode ser representada por mais de uma classe.

    Outro problema é que o grau de coesão não dimiuirá com o aumento contínuo de código de manutenção nas classes. Já pensou, a cada refactoring na classe a sua coesão diminuirá. CESPE pirou nesta questão.
  • CERTO
    coesão pode se dizer de forma bruta quase o oposto de acoplamento.
  • Pelo que pesquisei sobre coesão de classes, a definição mais sucinta que encontrei foi:
     
    Coesão é o quanto as tarefas que uma classe deve realizar estão relacionadas com um mesmo conceito. Por exemplo, uma classe ContaCorrente deve ser apenas atributos como Saldo e métodos Sacar e Depositar. 
    Baixa coesão é uma classe que realiza mais de conceito. Por exemplo, a classe Cliente tem os atributos cadastrais (nome, endereco, sexo) e inclui nela rotinas como fazerEmprestimo, realizarSaque.
     
    Explicito na questão e esclarecendo o comentário do colega: Acoplamento é quanto um elemento (classe, método, atributo) depende e conhece do outro. Elementos muito acoplados geralmente são muito dependentes, mudou um e você com certeza vai ter que mudar o outro.
  • Concordo com o BACEN, se tiver que criar mais código para aumentar a coesão, criaríamos programas imensos sem nexos. Isso vai de encontro às definições de Refactoring, como o olcega Bacen já falou.
  • Questão confusa e subjetiva.

    Mas a palavra manutenção mata a questão, pois o principal objetivo da coesão é facilitar ou reduzir a manutenção, então se estamos escrevendo um código que exigirá uma maior manutenção, é MUITO provável que estejamos diminuindo sua coesão.
    O chato é que não dá pra afirmar 100% que o problema do aumento de manutenção seja falta de coesão, mas não invalida a questão.
  • Ao meu entender, a definição de coesão esta correta: cada classe deve ter atributos e métodos de seu próprio domínio (classe Cliente não tem domínio da ContaCorrente, conforme comentário anterior). Domínio aqui significa o contexto em que essa aplicação esta inserida, não apenas como uma fase de análise na ES.

    Embora uma entidade possa ser representada por mais de uma classe, isso não é recomendável. Você terá código duplicado em classes diferentes (caso não use de herança/polimorfismo), o que aumenta o acoplamento entre esses objetos. Mantendo o exemplo anterior, uma entidade "Cliente" pode ser representada pelas classes Cliente e ClienteResidencial. Ambos representam o domínio de informações de um cliente e caso um atributo existente nessa entidade mude seu tipo de boolean para int, por exemplo, você terá que alterar duas classes ao invés de uma!

    Refatorar não é aumentar linhas de código, mas sim simplificar e melhorar código, o que muitas vezes traz a redução dessas linhas. Quanto mais o código de uma classe for coerente com o nome que carrega, mais coesa ela é. 


ID
770089
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca de coesão e acoplamento, elementos críticos para o
desenvolvimento e manutenção de sistemas, julgue os itens que se
seguem.

O acoplamento de métodos expressa o fato de que qualquer método deve ser responsável somente por uma tarefa bem definida.

Alternativas
Comentários
  • A questão definiu a coesão e não o acoplamento.

    Pressman define coesão e acoplamento da seguinte forma:

    1)coesão
     ... coesão implica que um componente ou classe encapsule somente os atributos e operações muito relacionados entre si e com a classe ou componente propriamente dito.

    2)acoplamento
    ... acoplamento é uma medida qualitativa do grau em que as classes são conectadas entre si.
  • A sentença fala de coesão e não de acoplamento.

    Coesão: "qualquer método deve ser responsável somente por uma tarefa bem definida."
    Acomplamento seria o contrário disso.
  • ERRADO
    Acoplamento seria a singularidade do método

ID
773446
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Engenharia de Software
Assuntos

A engenharia de software busca sistematizar a produção de
software com qualidade. No que concerne ao estágio de projeto,
julgue os seguintes itens.

A independência dos componentes é um dos atributos que reflete a qualidade do projeto. O grau de independência pode ser medido a partir dos conceitos de acoplamento e coesão, os quais, idealmente, devem ser alto e baixo, respectivamente.

Alternativas
Comentários
  • Errado.
    O grau de independência pode ser medido a partir dos conceitos de acoplamento e coesão, os quais, idealmente, devem ser baixo e alto, respectivamente.
  • Para discussão mais ampla:

    http://www.inf.ufpr.br/andrey/ci221/SOFTua10.pdf
  • A independência dos componentes é um dos atributos que reflete a qualidade do projeto. O grau de independência pode ser medido a partir dos conceitos de acoplamento e coesão, os quais, idealmente, devem ser alto e baixo, respectivamente.

    RESPOSTA: E

    Errado. O conceito de independência funcional é uma decorrência direta da modularidade dos conceitos de abstração e ocultamento funcional.

    A independência funcional é conseguida pelo desenvolvimento de módulos com função de “finalidade única” e uma “aversão” a interação excessiva com outros módulos.

    Módulos independentes são mais fáceis de manter(e testar) porque os efeitos secundários causados por modificação de projeto ou código são limitados, a propagação de erros é reduzida e os módulos reusáveis são possíveis.

    Para resumir, a independência funcional é a chave para um bom projeto e o projeto é a chave da qualidade de software.

    A indepenência é medida usando dois critérios qualitativos: coesão e acoplamento.

    • Coesão: um módulo coeso realiza uma única tarefa dentro de um procedimento de software, requerendo pouca interação com os procedimentos que estão sendo realizados em outras partes de um programa. Um módulo coeso deveria (idealmente) fazer apenas uma coisa

        • Autamente coeso: excelente;

        • Baixa coesão: problemas.

    • Acoplamento: é uma medida de interconexão entre os módulos numa estrutura de software. O acoplamento depende da complexidade da interface entre os módulos, do ponto em que é feita entrada ou referência a um módulo e que dados passam através da interface. Em projetos de software, luta-se por acoplamento mais baixo possível. Conectividade simples entre módulos resulta em software bem mais fácil de entender e menos propenso a “efeito de propagação” que acontecem quando erros ocorrem em um lugar [e] se propagam por todo o sistema.

    (http://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCwQFjAA&url=http%3A%2F%2Fjulianakolb.files.wordpress.com%2F2010%2F08%2Faula06_principios_de_projetov2.ppt&ei=WcUjUvnwONW-4APvuICICw&usg=AFQjCNGR1xCOldIzxBnBFg8H2euNcis7uQ&sig2=BdVMO-LberL2lo271yYSHA&bvm=bv.51495398,d.dmg&cad=rja)

  • O acoplamente tem que ser baixo e a coesão alta.

  • questão só pra ver se o candidato está vivo


ID
783379
Banca
CESGRANRIO
Órgão
BNDES
Ano
2011
Provas
Disciplina
Engenharia de Software
Assuntos

O acoplamento de conteúdo acontece quando, entre dois módulos, um referencia o interior do outro. Esses dois módulos podem estar acoplados por mais de uma forma.

Desse modo, o acoplamento desses módulos será definido pela(o)

Alternativas
Comentários
  • Acoplamento: Acoplamento é quanto um elemento (classe, método, função, módulo, componente... basicamente qualquer coisa) depende e conhece do outro. Um exemplo seria: o nível de interligação entre duas classes(no caso de java), ou seja, o quanto uma classe conhece da outra. Elementos muito acoplados geralmente são muito dependentes, mudou um e você com certeza vai ter que mudar o outro. O acoplamento é proporcionalmente ligado a dor decabeça que vc terá caso mude a implementação de uma classe.
    Coesão: é o quanto as tarefas que um elemento realiza estão relacionadas com um mesmo conceito. Baixa coesão teria uma classe que, por exemplo, imprime um documento e exibe um formulário para o usuário, neste caso provavelmente você deveria dividir esta classe em mais de uma. Representa o quão uma classe é específica para desempenhar um papel em um contexto.
    A idéia eh sempre ter o máximo de coesão e o mínimo de acoplamento. Lembrando sempre que não ter acoplamento é impossível, pois a classe precisam de alguma forma se comunicarem.
  • Grau de interdependência entre dois módulos (Melhor para o pior): 
    1 - Acoplamento de dados: troca de parâmetros (o melhor): quando módulos ou classes compartilham dados via parâmetros. Cada parâmetro é uma parte elementar, send esta o unico dado compartilhado entre módulos ou classes (Ex. passando um inteiro para uma função que calcula aus raiz quadrada
    2 - Acoplamento de imagem (estrutura de dados comum utilizada parcialmente em vários módulos)
    3 - Acoplamento de controle - exemplo: flags indicando o que um módulo deve fazer (intermediário),  quando um módulo ou classe controla a lógica de outro, passando informações de que operações executar. 
    4 - Acoplamento comum (módulos acessam área de dados comum):  quando dois módulos ou classes compartilham os meswmos dados globais (Ex. uma variável global). Mudanças nos recursos compiartilhados implicará mudanças em todos os módulos que os utilizam.
    5 - Acoplamento de conteúdo: se um módulo faz referência ao interior do outro (o pior): Quando um módulo ou classe altera ou depende de uma funcionalidade interna de outro módulo (Ex. acessando dados locais de um módulo). Uma alteração no modulo de serviço acarretará alterações no módulo dependente.
    Coesão, intensidade da associação entre 2 módulos (Melhor para o pior):
    1 - Funcional (caixa preta, a melhor) – uma e somente uma função identificável.
    2 - Seqüencial (várias atividades – que precisam ser - executadas em seqüência, e os dados fluem de uma atividade para outra)
    3 - Comunicacional (atividades usam a mesma entrada e a mesma saída)
    4 - Procedural (atividades diferentes, com controle – e não dados - fluindo de uma para outra)
    5 - Temporal (várias funções executadas no mesmo tempo. Ex: inicialização)
    6 - Lógica (várias funções semelhantes porém independentes) 
    7 - Coincidental (a pior) 
     
  • Na verdade, a questão não testa conhecimento sobre os tipos de acoplamento.
    A questão pergunta o que acontece se dois módulos estiverem acoplados por mais de uma forma.

    Por exemplo: se dois módulos estiverem acoplados pelas formas A e B, qual será o acoplamento apresentado entre eles?
    Resposta: o pior. Ou seja, se A for pior que B, não precisa dizer que eles possuem os acoplamentos A e B. Basta dizer que possui A (o pior prevalece).
  • O acoplamento de conteúdo ocorre quando um componente modifica de forma "subreptícia" os dados internos de um outro componente. Esse tipo de acoplamento viola o acoplamento. 


ID
783394
Banca
CESGRANRIO
Órgão
BNDES
Ano
2011
Provas
Disciplina
Engenharia de Software
Assuntos

Pode-se avaliar a modularidade de um sistema de software pelo critério de coesão de seus módulos.

O módulo que contém elementos que contribuem para a execução de uma e somente uma atividade relacionada ao problema constitui um módulo com coesão

Alternativas
Comentários
  • a) comunicacional: funções que usam a mesma entrada ou possuem a mesma saída.
    c) procedural: módulos compostos por funções pouco relacionadas entre si.
    d) sequencial: sequência de funções onde a saída de uma será entrada de outra
    e) temporal:
    atividades que estão relacionadas no tempo.
  • Acoplamento: Acoplamento é quanto um elemento (classe, método, função, módulo, componente... basicamente qualquer coisa) depende e conhece do outro. Um exemplo seria: o nível de interligação entre duas classes(no caso de java), ou seja, o quanto uma classe conhece da outra. Elementos muito acoplados geralmente são muito dependentes, mudou um e você com certeza vai ter que mudar o outro. O acoplamento é proporcionalmente ligado a dor decabeça que vc terá caso mude a implementação de uma classe.
    Coesão: é o quanto as tarefas que um elemento realiza estão relacionadas com um mesmo conceito. Baixa coesão teria uma classe que, por exemplo, imprime um documento e exibe um formulário para o usuário, neste caso provavelmente você deveria dividir esta classe em mais de uma. Representa o quão uma classe é específica para desempenhar um papel em um contexto.
    A idéia eh sempre ter o máximo de coesão e o mínimo de acoplamento. Lembrando sempre que não ter acoplamento é impossível, pois a classe precisam de alguma forma se comunicarem.
  • Grau de interdependência entre dois módulos (Melhor para o pior): 
    1 - Acoplamento de dados: troca de parâmetros (o melhor): quando módulos ou classes compartilham dados via parâmetros. Cada parâmetro é uma parte elementar, send esta o unico dado compartilhado entre módulos ou classes (Ex. passando um inteiro para uma função que calcula aus raiz quadrada
    2 - Acoplamento de imagem (estrutura de dados comum utilizada parcialmente em vários módulos)
    3 - Acoplamento de controle - exemplo: flags indicando o que um módulo deve fazer (intermediário),  quando um módulo ou classe controla a lógica de outro, passando informações de que operações executar. 
    4 - Acoplamento comum (módulos acessam área de dados comum):  quando dois módulos ou classes compartilham os meswmos dados globais (Ex. uma variável global). Mudanças nos recursos compiartilhados implicará mudanças em todos os módulos que os utilizam.
    5 - Acoplamento de conteúdo: se um módulo faz referência ao interior do outro (o pior): Quando um módulo ou classe altera ou depende de uma funcionalidade interna de outro módulo (Ex. acessando dados locais de um módulo). Uma alteração no modulo de serviço acarretará alterações no módulo dependente.
    Coesão, intensidade da associação entre 2 módulos (Melhor para o pior):
    1 - Funcional (caixa preta, a melhor) – uma e somente uma função identificável.
    2 - Seqüencial (várias atividades – que precisam ser - executadas em seqüência, e os dados fluem de uma atividade para outra)
    3 - Comunicacional (atividades usam a mesma entrada e a mesma saída)
    4 - Procedural (atividades diferentes, com controle – e não dados - fluindo de uma para outra)
    5 - Temporal (várias funções executadas no mesmo tempo. Ex: inicialização)

    6 - Lógica (várias funções semelhantes porém independentes) 
     
    7 - Coincidental (a pior) 
     
  • No Pressman traz que

    São os tipos de Coesão dados:

    1Funcional (método com função bem definida)

    2. de Camadas (pacotes/componentes/classes onde camadas de alto nível acessam as de baixo nível mas não o contrário)

    3. de Comunicação (todas os operações que acessam os mesmos dados são definidas em uma classe)


  • Por JORGE MOREIRA:

     

    Grau de interdependência entre dois módulos (Melhor para o pior): 

     

    1 - Acoplamento de dados: troca de parâmetros (o melhor): quando módulos ou classes compartilham dados via parâmetros. Cada parâmetro é uma parte elementar, send esta o unico dado compartilhado entre módulos ou classes (Ex. passando um inteiro para uma função que calcula aus raiz quadrada

     

    2 - Acoplamento de imagem (estrutura de dados comum utilizada parcialmente em vários módulos)

     

    3 - Acoplamento de controle - exemplo: flags indicando o que um módulo deve fazer (intermediário),  quando um módulo ou classe controla a lógica de outro, passando informações de que operações executar. 

     

    4 - Acoplamento comum (módulos acessam área de dados comum):  quando dois módulos ou classes compartilham os meswmos dados globais (Ex. uma variável global). Mudanças nos recursos compiartilhados implicará mudanças em todos os módulos que os utilizam.

     

    5 - Acoplamento de conteúdo: se um módulo faz referência ao interior do outro (o pior): Quando um módulo ou classe altera ou depende de uma funcionalidade interna de outro módulo (Ex. acessando dados locais de um módulo). Uma alteração no modulo de serviço acarretará alterações no módulo dependente.

     

    Coesão, intensidade da associação entre 2 módulos (Melhor para o pior):

     

    1 - Funcional (caixa preta, a melhor) – uma e somente uma função identificável.

     

    2 - Seqüencial (várias atividades – que precisam ser - executadas em seqüência, e os dados fluem de uma atividade para outra)

     

    3 - Comunicacional (atividades usam a mesma entrada e a mesma saída)

     

    4 - Procedural (atividades diferentes, com controle – e não dados - fluindo de uma para outra)

     

    5 - Temporal (várias funções executadas no mesmo tempo. Ex: inicialização)
     

    6 - Lógica (várias funções semelhantes porém independentes)   

     

    7 - Coincidental (a pior)   


ID
784672
Banca
ESAF
Órgão
CGU
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Acoplamento é uma medida do número e da resistência

Alternativas
Comentários
  • Olá, pessoal!
    Essa questão foi anulada pela organizadora.

    Bons estudos!

ID
802945
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca da modularização, assinale a opção correta.

Alternativas
Comentários
  • Um problema complexo é melhor abordado se for dividido primeiramente em vários subproblemas.

    De que forma? Através da Modularização.

    A implementação desses Módulos é feita através de SUBPROGRAMAS que podem ser FUNÇÕES e PROCEDIMENTOS.


ID
943246
Banca
CESPE / CEBRASPE
Órgão
INPI
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca de engenharia de requisitos de software, coesão, acoplamento e medição e estimativas de projetos de software, julgue os próximos itens.

De acordo com os princípios da engenharia de software relacionados à independência funcional, os algoritmos devem ser construídos por módulos visando unicamente ao alto acoplamento e à baixa coesão, caso a interface entre os módulos dê-se pela passagem de dados.

Alternativas
Comentários
  • Conforme o livro que adquiri entitulado Handbook de Questões de TI:

    "Quando projetamos um algoritmo devemos construir módulos
     com apenas um propósito, alta coesão, e diminuir ao máximo a interação entre eles, baixo nível de acoplamento. Ou seja, o ideal é projetar software de forma que cada módulo encaminhe uma sub-função especí ca de requisitos e tenha uma interface simples quando visto de outras partes da estrutura do programa. A independência funcional é fundamental para um bom projeto."
  • Acoplamento é o grau de dependência de uma determinado módulo do programa em relação a outros módulos. Quanto MENOS acoplamento(Interconexões entre classes) melhor. 

    Coesão é a medida de quão fortemente relacionadas são as responsabilidades de um módulo. Quanto MAIOR a coesão melhor. 

    Fonte adaptada: ProvasTI
  • está invertido!


ID
1029910
Banca
CESPE / CEBRASPE
Órgão
TCE-RO
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

No que concerne à análise e ao projeto de software, julgue os próximos itens.

Em projeto de software, a independência funcional pode ser medida pela coesão, isto é, pela interdependência relativa entre os módulos, e pelo acoplamento, ou seja, pela força funcional relativa de um módulo

Alternativas
Comentários

  • O CESPE, inverteu os conceitos.

    A independência funcional é medida usando-se dois critérios de qualitativos: coesão e acoplamento. COESÃO - medida da força funcional relativa de UM módulo. ACOPLAMENTO - medida da interdependência relativa entre os módulos.
  • cespe adora inverter conceitos



  • É verdade

  • Os conceitos foram invertidos.


ID
1143541
Banca
VUNESP
Órgão
DCTA
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

Considere um módulo A, componente de um programa computacional. Deseja-se que A tenha baixo acoplamento. Nesse caso, espera-se que A

Alternativas
Comentários
  • Nos projetos de softwares são desejáveis alta coesão e baixo acoplamento.

     

    Coesão. É a divisão de responsabilidades. Uma classe ou método coeso significa que tem um papel bem definido e certo.

     

    Acoplamento. Os módulos (incluindo classes, métodos) de um sistema deve ser os mais independentes quanto puder. 

  • Complementando o Wagner....

    Em um projeto de software, nós sempre buscamos por uma alta coesão e baixo acoplamento!

  • Acoplamento por dados é o melhor que pode-se ter, ele garantirá um baixo acoplamento associando uma única lista simples entre os módulos.


ID
1330390
Banca
Quadrix
Órgão
DATAPREV
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Uma característica mensurável de um projeto orientado a objetos é o número de conexões físicas entre os elementos do projeto, o que pode ser medido por meio do número de colaborações entre as classes ou do número de mensagens passadas entre os objetos. Essa característica se refere a:

Alternativas
Comentários
  • O acoplamento é o nível de interdependência entre os módulos de um software.

  • colaborações entre as classes ou do número de mensagens passadas entre os objetos.) Definicao de acoplamento, toda vez que tratar de colaborações e mensagens passadas (Comunicacao) a grandes chances de ser ACOPLAMENTO

  • a-

    De acordo com as metricas de projeto, Acoplamento acontece quando metodos acessam diretamente variaveis de instancia. LCOM (lack of cohesion) mede o percentual de metodos DENTRO DE UMA CLASSE que referenciam uma variavel. CBO -couplin g between object classes - mede as classes acopladas a uma classe especifica


ID
1352671
Banca
FUNCAB
Órgão
MDA
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

Durante o desenvolvimento de software com decomposição funcional utilizando modularização, o objetivo do desenvolvedor é usar rotinas com:

Alternativas
Comentários
  • Nos projetos de softwares são desejáveis alta coesão e baixo acoplamento.

    Coesão. É a divisão de responsabilidades. Uma classe ou método coeso significa que tem um papel bem definido e certo. 

    Acoplamento. Os módulos (incluindo classes, métodos) de um sistema deve ser os mais independentes quanto puder. 


ID
1405081
Banca
CS-UFG
Órgão
CELG/GT-GO
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

Um resultado desejável de projeto de software é

Alternativas
Comentários
  • Nos projetos de softwares são desejáveis alta coesão e baixo acoplamento.

     

    Coesão. É a divisão de responsabilidades. Uma classe ou método coeso significa que tem um papel bem definido e certo.

     

    Acoplamento. Os módulos (incluindo classes, métodos) de um sistema deve ser os mais independentes quanto puder. 


ID
1478890
Banca
FUNCAB
Órgão
MJSP
Ano
2015
Provas
Disciplina
Engenharia de Software
Assuntos

“No modelo de projeto, é necessário que as classes de projeto colaborem umas com as outras. No entanto, a colaboração deverá ser mantida em um nível mínimo aceitável.” Esta definição se refere a característica de uma classe de projeto bem formada, conhecida como:

Alternativas
Comentários
  • Acoplamento é o grau de dependência entre dois artefatos. Esta dependência é uma medida da quantidade de informações que um artefato deve possuir sobre o outro para que as colaborações necessárias entre ambos possam ocorrer. “Artefato” pode ser praticamente qualquer coisa que faz parte do projeto – uma classe, método, componente, pacote, tabela, protocolo de comunicação, sistema externo, ator (inclusive humano), documento, etc.


ID
1568245
Banca
FUNDATEC
Órgão
BRDE
Ano
2015
Provas
Disciplina
Engenharia de Software
Assuntos

Assinale a alternativa correta sobre o conceito de acoplamento em engenharia de software.

Alternativas
Comentários
  • O acoplamento significa o quanto uma classe depende da outra para funcionar. E quanto maior for esta dependência entre ambas, dizemos que estas classes elas estão fortemente acopladas. 

    http://www.devmedia.com.br/entendendo-coesao-e-acoplamento/18538

  • Acoplamento:

    É uma medida QUALITATIVA do grau com que as classes estão ligadas entre si.

    Conforme as classes e os componentes se tornam mais interdependentes, o acoplamento aumenta.

    Objetivo: manter o acoplamento o mais baixo possível.

     

     

    Letra A

     

     

    Engenharia de Software 8ed - Pressman - pg: 298

  • Letra B, Rodrigo.

    A letra A é a definição de coesão.

  • b-

    acoplamento - grau de dependencia do modulo. quanto menos, melhor (algum grau de dependencia é necessario, mas no geral os componentes devem ser standalone p/ que alteracoes em 1 nao altere o outro).

    coesao - capacidade dos compoenentes de funcionarem encapsulados dos outros. uso de getters() & setters() é um meio de implementar coesao


ID
1629976
Banca
FUNCAB
Órgão
Sinesp
Ano
2015
Provas
Disciplina
Engenharia de Software
Assuntos

“No modelo de projeto, é necessário que as classes de projeto colaborem umas com as outras. No entanto, a colaboração deverá ser mantida em um nível mínimo aceitável.” Esta definição se refere à característica de uma classe de projeto bem formada, conhecida como:

Alternativas
Comentários
  • Pessoal memorizem: nos projetos de softwares são desejáveis alta coesão e baixo acoplamento.

    Coesão lembra divisão. É a divisão de responsabilidades. Uma classe ou método coeso significa que tem um papel bem definido e certo. Exemplo: a classe cliente contém apenas métodos pra tratar o objeto cliente e não, por exemplo, um método de conexão com o banco de dados.

    Acoplamento lembra dependência. Os módulos (incluindo classes, métodos) de um sistema deve ser os mais independentes quanto puder. Exemplo: na classe cliente não deve conter uma instanciação da classe Carro, pois isso gera dependência entre ambas (se alterar a classe Carro, a classe Cliente será impactada). 

    Gabarito

    e) X

  • Características de Classes de Projeto bem Formada:

    .: Completa e Suficiente;

    .: Primitivismo;

    .: Alta Coesão;

    .: Baixo Acoplamento.

    .

    .

    At.te

    Foco na missão 


ID
1639717
Banca
CESPE / CEBRASPE
Órgão
DPF
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

No que se refere às linguagens de programação, julgue o item subsecutivo.

Coesão e acoplamento são dois critérios úteis para se analisar a qualidade da interface pública de uma classe. A interface pública será considerada coesa se todos os seus recursos estiverem relacionados ao conceito que a classe representa, enquanto, no acoplamento, uma classe é dependente de outra.

Alternativas
Comentários
  • Coesão está, na verdade, ligado ao princípio da responsabilidade única, que foi introduzido por Robert C. Martin no inicio dos anos 2000 e diz que uma classe deve ter apenas uma única responsabilidade e realizá-la de maneira satisfatória, ou seja, uma classe não deve assumir responsabilidades que não são suas . Uma vez sendo ignorado este princípio, passamos a ter problemas, como dificuldades de manutenção e de reuso. 
    (...)

    ​Já o acoplamento significa o quanto uma classe depende da outra para funcionar. E quanto maior for esta dependência entre ambas, dizemos que estas classes elas estão fortemente acopladas. O forte acoplamento também nos traz muitos problemas, problemas até semelhantes aos que um cenário pouco coeso nos traz. Observe o diagrama abaixo:

    Leia mais em: Entendendo Coesão e Acoplamento http://www.devmedia.com.br/entendendo-coesao-e-acoplamento/18538#ixzz3oprfIfqm

  • Gabarito Certo

    Coesão está, na verdade, ligado ao princípio da responsabilidade única, que foi introduzido por Robert C. Martin no inicio dos anos 2000 e diz que uma classe deve ter apenas uma única responsabilidade e realizá-la de maneira satisfatória, ou seja, uma classe não deve assumir responsabilidades que não são suas . Uma vez sendo ignorado este princípio, passamos a ter problemas, como dificuldades de manutenção e de reuso.

    Já o acoplamento significa o quanto uma classe depende da outra para funcionar. E quanto maior for esta dependência entre ambas, dizemos que estas classes elas estão fortemente acopladas. O forte acoplamento também nos traz muitos problemas, problemas até semelhantes aos que um cenário pouco coeso nos traz.

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • Prezados,

    A coesão está relacionada com o fato da classe representara um único conceito. Enquanto o acoplamento está relacionado o quanto uma classe é dependente da outra.
    Buscamos alta coesão baixo acoplamento.

    Portanto a questão está correta.


  • Coesão e Acoplamento são princípios de engenharia de software muito utilizados. Quando queremos ter uma arquitetura madura e sustentável, temos que levar em conta estes dois princípios, pois cada um deles tem um propósito específico que visa melhorar o design do software. O que acontece é que muitas pessoas não sabem a diferença entre eles e acabam não conseguindo obter os benefícios que colocá-los em prática na hora de se desenhar a arquitetura de um software.


    https://www.devmedia.com.br/entendendo-coesao-e-acoplamento/18538


ID
2085433
Banca
Aeronáutica
Órgão
CIAAR
Ano
2015
Provas
Disciplina
Engenharia de Software
Assuntos

Métricas de software indicam um nível de qualidade que o software pode ter. Várias são as definições de métricas, mas ter um indicador que verifica essa qualidade é importante para o sucesso de um projeto de software. O IEEE Standard Glossary of Software Engineering Terminology tem a definição de métrica como “medida quantitativa do grau com o qual um sistema, componente ou processo possui determinado atributo”. Muitas métricas já foram propostas para programa de computadores, e alguns atributos deverão ser atingidos pelas métricas de software efetivas, apresentadas por Pressman (2011). “A métrica deverá satisfazer as ideias do engenheiro sobre o atributo do produto considerado (por exemplo, uma métrica que mede coesão de módulo deverá crescer em valor na medida em que aumenta o nível da coesão).” Trata-se do atributo

Alternativas
Comentários
  • A métrica derivada e as medições que levam até ela deverão ser:
    - Simples e computáveis. Devera ser relativamente fácil aprender a derivar a métrica, e sua computação não deve demandar esforço ou tempo fora do normal.
    - Empiricamente e intuitivamente persuasiva. A métrica devera satisfazer as ideias do engenheiro sobre o atributo do produto considerado (por exemplo, uma métrica que mede coesão de modulo deverá crescer em valor na medida em que aumenta o nível de coesão) .
    - Consistente e objetiva. A métrica devera sempre produzir resultados que não sejam ambíguos um terceiro independente devera ser capaz de derivar o mesmo valor da métrica usando as mesmas informações sobre o software.
    - Consistente no seu uso das unidades e dimensões. A computação matemática da métrica devera usar medidas que não resultem em combinações bizarras de unidades. Por exemplo, multiplicar numero de pessoas nas equipes de projeto pelas variáveis da linguagem de programação no programa resulta em uma mistura duvidosa de unidades que não e claramente convincente.
    - Independente da linguagem de programação. As métricas deverão ser baseadas no modelo de requisitos, modelo de projeto ou na própria estrutura do programa. Elas não deverão ser dependentes dos caprichos da sintaxe ou semânticas das linguagens de programação.
    - Um mecanismo efetivo para feedback de alta qualidade. A métrica devera fornecer informações que podem levar a um produto final de melhor qualidade.

    Fonte: Pressman (2011)

     


ID
2596030
Banca
Exército
Órgão
EsFCEx
Ano
2017
Provas
Disciplina
Engenharia de Software
Assuntos

Em relação à teoria de Engenharia de Software, no contexto de projeto no nível de componente para sistemas orientados a objeto, coesão implica que um componente ou classe encapsule somente os atributos e operações muito relacionados entre si e com a classe ou componente propriamente dito. Neste contexto, quanto aos diferentes tipos de coesão, associe a segunda coluna de acordo com a primeira e, a seguir, assinale a alternativa com a sequência correta.


TIPO DE COESÃO

1. Funcional

2. Regimental

3. De Comunicação

4. Paralelo

5. De Camadas


DESCRIÇÃO

( ) Apresentado basicamente por operações, este nível de coesão ocorre quando um módulo efetua um e apenas um cálculo e então retorna um resultado.

( ) Todas as operações que acessam os mesmos dados são definidas em uma classe. Em geral, tais classes se concentram exclusivamente nos dados em questão, acessando-os e armazenando-os.

( ) Exibido por pacotes, componentes e classes, esse tipo de coesão ocorre quando uma camada de mais alto nível tem acesso a serviços de camadas mais baixas, mas camadas mais baixas não têm acesso a camadas mais altas.

Alternativas
Comentários
  • Tipos de Coesão:

     

    - Funcional: apresentada por operações. Componente realiza cálculo e retorna um resultado;

    - De camadas: camada mais alta acessa serviços da camada mais baixa.

    - De Comunicação: operações que acessam os mesmos dados são definidas em uma classe.

     

    Fonte: Pressman - Cap10 - Projeto de Componentes

     

    @papirobizurado


ID
2620516
Banca
CS-UFG
Órgão
SANEAGO - GO
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Dentro dos bons princípios de projeto e construção de software, a Lei de Démeter diz que “um método deve enviar mensagens somente para objetos a que ele tem acesso direto”. Essa lei tem como objetivo:

Alternativas
Comentários
  • b-

    envio de mensagens - comunicação entre classes. O conceito da questao é encapsulamento, o qual determina que um objeto so pode expor as partes que detêm interesse aos objetos comunicantes, o que significa usar visibilidade private para delcarar atributos e acessa-los com getters & setters. Isso promove independencia entre as classes e facilita a manutenção do sistema visto que basta alterar somente a classe em questao em vez de todas que comunicam com ela

  • Coesão: a classe deve ter função específica/única.

    Acoplamento: o quanto uma classe depende da outra para funcionar.

    Obs: O ideal seria ter um sistema com alta coesão e baixo acoplamento. No entanto, isso não quer dizer que um sistema que possui baixa coesão tem alto acoplamento. Esses conceitos são independentes.

    Bons estudos.


ID
2631016
Banca
FAURGS
Órgão
TJ-RS
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

Como é denominada a característica de uma classe de projeto que tem um conjunto de responsabilidades, pequeno e focado e que, de forma resoluta, aplica atributos e métodos para implementar essas responsabilidades?

Alternativas
Comentários
  • Nos projetos de softwares são desejáveis alta coesão e baixo acoplamento.

     

    Coesão. É a divisão de responsabilidades. Uma classe ou método coeso significa que tem um papel bem definido e certo.

     

    Acoplamento. Os módulos (incluindo classes, métodos) de um sistema deve ser os mais independentes quanto puder. 

  • d-

    Coesao é o resultado de metodos e variaveis encapsulados, permitindo acesso somente ao necessARIO E FACILITANDO MANUTENÇAO SEM ALTERAÇÕES ADICIONAIS NAS CLASSES QUE EFETUAM O ACESSO. Metricas de projeto que determinam se coesao deve melhorar é LCOM (lack of cohesion), CBO (coupling between object classes) e utilização global

  • Falou em responsabilidades é coesão.

    Falou em independentes é acoplamento.


ID
2735065
Banca
Marinha
Órgão
Quadro Técnico
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Segundo Pressman (2011), a Coesão é descrita como o "foco único" de um componente e o Acoplamento é uma medida qualitativa do grau com que as classes estão ligadas entre si. Sendo assim, assinale a opção que apresenta as categorias de acoplamento definidas por Lethbridge e Laganiére (2001).

Alternativas
Comentários
  • Mais uma questão (copia e cola) do livro do Pressman (Cap 10 - Projeto de componentes)


    Coesão

    Funcional: apresentada por operações. Componente realiza cálculo e retorna um resultado;

    De Camadas: camada mais alta acessa serviços da camada mais baixa.

    De Comunicação: operações que acessam os mesmos dados são definidas em uma classe.


    Acoplamento

    Conteúdo: violação de encapsulamento;

    Comum: componentes usam uma variável global;

    Controle: OpA chama OpB e passa flag de controle;

    Carimbo: Classe B faz parte da definição de Classe A.

    Dados: operações passam longas strings como argumentos de dados.

    Chamadas de rotinas: uma operação chama a outra.

    Uso de tipos: componente A usa tipo de dados definido em B.

    Inclusão ou importação: componente A importa ou inclui pacote de B.

    Externo: componente se comunica ou colabora com outros da infraestrutura.



    @papirobizurado

  • Coesão

    - É descrita como o "foco único" de um componente

    - Um componente ou classe encapsula apenas atributos e operações que estejam intimamente relacionados entre si.

    Tipo de Coesão:

    Funcional: apresentada por operações. O componente realiza cálculo e retorna um resultado;

    De Camadas: a camada mais alta acessa serviços da camada mais baixa.

    De comunicação: operações que acessam os mesmos dados são definidas em uma classe.

    Acoplamento

    - É uma medida qualitativa do grau com que as classes estão ligadas entre si.

    - Conforme as classes se tornam mais interdependentes o acoplamento aumenta.

    Tipo de Acoplamento:

    Acoplamento por conteúdo: ocorre quando um componente viola de forma sub-reptícia os dados internos a outro componentes. Isso viola o encapsulamento.

    Acoplamento comum: componentes usam uma variável global;

    Acoplamento por controle: ocorre quando a operação A chama a operação B e passa uma flag de controle para B.

    Acoplamento “carimbo”: ocorre quando a ClasseB é declarada com um tipo para um argumento de uma operação da ClasseA.

    Acoplamento por dados: operações passam longas strings como argumentos de dados.

    Acoplamento por chamadas de rotinas: ocorre quando uma operação chama a outra.

    Acoplamento por uso de tipos: ocorre quando o componente A usa um tipo de dados definido em um componente B.

    Acoplamento por inclusão ou importação: ocorre quando o componente A importa ou inclui um pacote ou conteúdo do componente B.

    Acoplamento externo: ocorre quando um componente se comunica ou colabora com componentes de infraestrutura.

    Alternativa: D


ID
2921488
Banca
FEMPERJ
Órgão
TCE-RJ
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Duas medidas importantes da qualidade de um projeto estruturado são a coesão e o acoplamento. O projetista deve tentar atingir:

Alternativas
Comentários
  • Coesão – Essa característica qualitativa indica robustez funcional relativa de um módulo. É uma extensão natural do conceito do encapsulamento de informações. Um módulo coeso realiza um única tarefa, exigindo pouca interação com outros componentes em outras partes de um programa. E sempre indicado obter ao máximo uma alta coesão.

    Acoplamento – Indica a interdependência relativa entre módulos. É uma indicação da interconexão entre os módulos em uma estrutura de software e depende da complexidade da interface entre os módulos, do ponto onde é feito o acesso a um módulo e dos dados que passam pela interface. Em projeto de software, deve-se sempre tentar obter o menor grau de acoplamento possível.

    Engenharia de Software, 9° Edição, Somerville


ID
3257815
Banca
FCC
Órgão
TRF - 3ª REGIÃO
Ano
2019
Provas
Disciplina
Engenharia de Software
Assuntos

Os conceitos alta coesão e baixo acoplamento, utilizados no processo de desenvolvimento de software, são princípios essenciais de

Alternativas
Comentários
  • Basicamente, dividir um componente em unidades menores é modulariza-lo com isto conseguimos fazer modificações/adaptções/melhorias em um módulo sem interferir em outros. Um módulo com um bom particionamento garante alta abstração, alta coesão e baixo acoplamento. 

    GABARITO ALTERNATIVA B


ID
3259120
Banca
COVEST-COPSET
Órgão
UFPE
Ano
2019
Provas
Disciplina
Engenharia de Software
Assuntos

Comparando as abordagens de RPC (remote procedure call) e Mensageria (messaging) para a integração de sistemas, selecione a afirmação correta.

Alternativas

ID
3623638
Banca
FADESP
Órgão
SANEPAR
Ano
2017
Disciplina
Engenharia de Software
Assuntos

Uma empresa de fornecimento de software chegou à conclusão de que seus projetos normalmente são de difícil manutenção, em razão da dificuldade de realizar o isolamento de componentes ou pelo fato de que os comportamentos destes interferem um no outro. Não é difícil que estes projetos sejam descontinuados para que sejam refeitos em outra estrutura arquitetural, que também acaba sofrendo as consequências dos mesmos incidentes. Pode-se concluir que os projetos dessa empresa estão com 

Alternativas
Comentários
  • "...em razão da dificuldade de realizar o isolamento de componentes..." -> Alto acoplamento, diz respeito à alta interdependência dos componentes entre si.

    Gabarito -> C


ID
3661300
Banca
FCC
Órgão
TRT - 20ª REGIÃO (SE)
Ano
2009
Disciplina
Engenharia de Software
Assuntos

No desenvolvimento de sistemas, no âmbito das relações intermodulares entre as classes, diz-se que o programa está bem estruturado quando há

Alternativas
Comentários
  • Um programa está bem estruturada quando existe alta coesão e baixo acoplamento

    Alternativa: D


ID
3667240
Banca
IFB
Órgão
IFB
Ano
2016
Disciplina
Engenharia de Software
Assuntos

Leia as afirmativas a seguir sobre regras práticas para se criar um modelo de análise:


I) O modelo de análise deve priorizar as necessidades visíveis do domínio do problema ou do negócio e o nível de abstração desse modelo deve ser baixo.

II) Cada elemento do modelo de análise deve contribuir para entendimento geral dos requisitos de software e fornecer uma visão do domínio de informação, função e comportamento do sistema. 

III) O modelo de análise deve incluir considerações sobre modelos não funcionais e arquiteturais.

IV) Deve-se minimizar o acoplamento do sistema representado pelas relações entre classes e funções do mesmo.

V) Deve-se criar vários modelos para atender aos diferentes perfis das partes interessadas, pois validação de requisitos, testes de aceitação e projeto devem ser baseados em modelos diferentes.

Assinale a alternativa que apresenta todas as afirmativas acima que estão CORRETAS.

Alternativas

ID
3687118
Banca
NCE-UFRJ
Órgão
Ministério das Cidades
Ano
2005
Disciplina
Engenharia de Software
Assuntos

Considere as seguintes qualidades do projeto de um sistema de informação:


I- Coesão.
II- Acoplamento.
III- Reutilização.

Para obter uma boa qualidade de projeto, o projetista deve tentar:

Alternativas
Comentários
  • Reutilização e coesão são atributos desejáveis em um projeto de software, entretanto acoplamento é algo danoso ao projeto. Diante disto o gabarito é a alternativa D

    D) maximizar I, minimizar II e maximizar III;


ID
5362759
Banca
Quadrix
Órgão
CREFITO-4° Região (MG)
Ano
2021
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca da análise e do projeto de sistemas na engenharia de software, julgue o item.

Acoplamento é um dos conceitos utilizados para reconhecer e medir o grau de independência dos componentes em um projeto.

Alternativas
Comentários
  • Ano: 2021 Banca:  Órgão: CREFITO-4° Região (MG) 

    Com relação ao grau de independência dos componentes em um projeto, quanto mais coeso for um componente, MAIS estarão relacionadas as partes internas do componente entre si e ao seu propósito geral.

    Gab: Certo

    Foco!


ID
5362762
Banca
Quadrix
Órgão
CREFITO-4° Região (MG)
Ano
2021
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca da análise e do projeto de sistemas na engenharia de software, julgue o item.

Com relação ao grau de independência dos componentes em um projeto, quanto mais coeso for um componente, menos estarão relacionadas as partes internas do componente entre si e ao seu propósito geral.

Alternativas
Comentários
  • Com relação ao grau de independência dos componentes em um projeto, quanto mais coeso for um componente, mais estarão relacionadas as partes internas do componente entre si e ao seu propósito geral.

    Gab: Errado

    Foco!

  • Pelo contrário. Mais estarão relacionadas.

  • Um software de qualidade deve possuir Baixo acoplamento e alta Coesão.

    Ou seja, seus componentes devem ser pouco dependentes entre si, porém com alto grau de relacionamento.


ID
5445562
Banca
VUNESP
Órgão
EsFCEx
Ano
2021
Provas
Disciplina
Engenharia de Software
Assuntos

No projeto dos módulos que irão compor um software, deve-se ter a preocupação com o atendimento dos conceitos de coesão e acoplamento. Considerando esses dois conceitos, é correto afirmar que

Alternativas
Comentários
  • Cenário ideal de um software e ter um baixo acoplamento e uma alta coesão.

    Acoplamento e o grau de relacionamento entre os módulos de um software.

    Coesão Códigos coesos são aqueles de relação forte, onde seus membros estão intimamente ligados e estão ali por um objetivo comum. Um componente com Alta Coesão é um componente que possui apenas uma única responsabilidade, que possui em seu conteúdo/suas funções, apenas aquilo que realmente deve fazer.

    Resposta correta Letra (B)


ID
5556757
Banca
CETAP
Órgão
SEPLAD - PA
Ano
2021
Provas
Disciplina
Engenharia de Software
Assuntos

Em engenharia de software, coesão e acoplamento são princípios que se deve levar em consideração na busca pela qualidade e facilidade de manutenção e evolução dos sistemas. O que o Engenheiro deve buscar é um conjunto que leve o software para uma situação de: 

Alternativas
Comentários
  • Acoplamento é uma indicação da interconexão entre os módulos em uma estrutura de software. Ele depende da complexidade da interface entre os módulos, do ponto onde é feito o acesso a um módulo e dos dados que passam pela interface. Em projeto de software, você deve se esforçar para obter o menor grau de acoplamento possível.

    Coesão é uma extensão natural do conceito do encapsulamento de informações.Um módulo coeso realiza uma única tarefa, exigindo pouca interação com outros componentes em outras partes de um programa

    Cenário Ideal = Alta Coesão e Baixo Acoplamento.

    Pressman

    C