Vous êtes sur la page 1sur 5

Para tentar administrar essa complexidade inerente de sistemas de software, emergiu u m conceito chamado Independncia Funcional.

Este conceito est intimamente ligado modularidade, oc ultao de informaes e abstrao. Em sistemas de software, a Independncia Funcional pode ser medid a atravs de dois critrios: coeso e acoplamento. Coeso uma medida da fora funcional relativa de um mdulo. Em outras palavras a coes o mede o grau com que as tarefas executadas por um nico mdulo se relacionam entre si. Para software orientado a objetos, coeso tambm pode ser conceituada como sendo o quanto um a classe encapsula atributos e operaes que esto fortemente relacionados uns com os outros. Acoplamento uma medida da interdependncia relativa entre os mdulos. Para sistemas d e software orientados a objetos pode-se definir acoplamento como sendo o grau com o qual classes esto conectadas entre si. Existem mtricas definidas na literatura para coeso de um mdulo e acoplamento entre mdulos. As mtricas de coeso e acoplamento, tratam de avaliar como os componentes dependem uns dos outros. Neste caso, no so considerados como os requisitos funcionais, que levaram criao destes componentes, so dependentes uns dos outros e nem se o conjunto de requisitos funcionais e scolhido apropriado. Quando se escolhe um conjunto de requisitos funcionais muito interde pendente, os componentes da soluo gerada tendem a ser interdependentes tambm. 2UNIVERSIDADE FEDERAL DO PARAN - UFPR Bacharelado em Cincia da Computao

O desenvolvimento de software orientado a objetos tem como um dos seus preceitos aumenta r a coeso e diminuir o acoplamento entre os mdulos do sistema. O desenvolvimento orientado a objeto s facilita para o desenvolvedor criar componentes mais reutilizveis. Para isso, a orientao a objetos disponibiliza abstraes como classes, objetos, interfaces, atributos e mtodos. Alm disso, a o rientao a objetos introduziu conceitos como encapsulamento, herana e polimorfismo para aumentar a reutilizao e a extensibilidade e facilitar a manuteno de sistemas de software. Coeso Uma classe com baixa coeso faz muitas coisas no relacionadas e leva aos seguintes problema s: Difcil de entender Difcil de reusar Difcil de manter "Delicada": constantemente sendo afetada por outras mudanas Tipos de coeso Coincidente (pior) Lgico Temporal Procedural De comunicao Sequencial Funcional (melhor) Coeso coincidental H nenhuma (ou pouca) relao construtiva entre os elementos de um mdulo No linguajar OO: Um objeto no representa nenhum conceito OO

Uma coleo de cdigo comumente usado e herdado atravs de herana (provavelmente mltipla) Coeso lgica Um mdulo faz um conjunto de funes relacionadas, uma das quais escolhida atravs de u m parmetro ao chamar o mdulo Semelhante a acoplamento de controle Coeso temporal Elementos esto agrupados no mesmo mdulo porque so processados no mesmo intervalo d e tempo Exemplos comuns: Mtodo de inicializao que prov valores defaults para um monte de coisas diferentes Mtodo de finalizao que limpa as coisas antes de terminar 3UNIVERSIDADE FEDERAL DO PARAN - UFPR Bacharelado em Cincia da Computao Coeso procedural Associa elementos de acordo com seus relacionamentos procedurais ou algortmicos Um mdulo procedural depende muito da aplicao sendo tratada Junto com a aplicao, o mdulo parece razovel Sem este contexto, o mdulo parece estranho e muito difcil de entender Coeso de comunicao Todas as operaes de um mdulo operam no mesmo conjunto de dados e/ou produzem o mesmo tipo de dado de sada Cura: isole cada elemento num mdulo separado "No deveria" ocorrer em sistemas OO usando polimorfismo (classes diferentes par a fazer

tratamentos diferentes nos dados) Coeso sequencial A sada de um elemento de um mdulo serve de entrada para o prximo elemento Cura: decompor em mdulos menores Coeso funcional (a melhor) Um mdulo tem coeso funcional se as operaes do mdulo puderem ser descritas numa ni ca frase de forma coerente Num sistema OO: Cada operao na interface pblica do objeto deve ser funcionalmente coesa Cada objeto deve representar um nico conceito coeso Acoplamento Com uma classe possuindo forte acoplamento, temos os seguintes problemas: Mudanas em uma classe relacionada fora mudanas locais classe A classe mais difcil de entender isoladamente A classe mais difcil de ser reusada, j que depende da presena de outras classes Tipos de acoplamento Acoplamento de dados Acoplamento de controle Acoplamento de dados Situaes Sada de um objeto entrada de outro Uso de parmetros para passar itens entre mtodos Ocorrncia comum: 4UNIVERSIDADE FEDERAL DO PARAN - UFPR Bacharelado em Cincia da Computao Objeto a passa objeto x para objeto b

Objeto x e b esto acoplados Uma mudana na interface de x pode implicar em mudanas a b Acoplamento de controle Passar flags de controle entre objetos de forma que um objeto controle as etapa s de processamento de outro objeto Ocorrncia comum: Objeto a manda uma mensagem para objeto b b usa um parmetro da mensagem para decidir o que fazer Acoplamento de dados globais Dois ou mais objetos compartilham estruturas de dados globais um acoplamento muito ruim pois est escondido Uma chamada de mtodo pode mudar um valor global e o cdigo no deixa isso aparente Acoplamento de dados internos Um objeto altera os dados locais de um outro objeto Ocorrncia comum: Dados pblicos, package visibility ou mesmo protected em java