Sunteți pe pagina 1din 43

Prof.

Juliana Pinheiro Campos


E-mail: jupcampos@gmail.com
ENG10082 Programao II
Crditos: Prof. Gustavo Willam Pereira e
Prof. Clayton Vieira Fraga Filho

Abstrao e modularizao
Nossos programas se tornam cada vez mais complexos.
Para problemas mais complexos, torna-se cada vez mais difcil
lidar com todos os detalhes ao mesmo tempo.
A soluo utilizada para lidar com o problema da complexidade a
a b s t ra o e a m o du la riza o .
A b s tra o :
capacidade de ignorar detalhes das partes para focalizar a
ateno em um nvel mais elevado de um problema.

Modularizao
Processo de dividir um todo em partes bem definidas, que podem
ser construdas e examinadas separadamente e que interagem de
maneiras bem definidas.
O software pode ser dividido em mdulos, que so integrados para
satisfazer aos requisitos do sistema.
m a is f c il de s e re s o lv e r u m pro b le m a c o m ple x o
qu a n do e le div idido e m pa rt e s a dm in is t r v e is .
A diviso de um problema complexo em problemas menores
chamada de separao de interesses (separation of concerns).

Modularizao
M du lo s : conjuntos de elementos mantidos pela equipe de
desenvolvimento que fornecem e usam servios de outros elementos do
software;
Podem ser compostos de outros elementos mais simples (p.e:
procedimentos e funes), ou componentes (provedores de servios);
Um mdulo bem projetado tem um objetivo simples e apresenta interface
reduzida (pequena) para outros mdulos. Isso leva o mdulo a ser:
REUSVEL ( apto a ser incorporado em muitos programas)
MODIFICVEL (pode ser alterado sem forar grandes modificaes nos
outros mdulos)
Ex: Mdulo Sistema de vendas: fazer vendas, efetuar recebimento,
lanar no caixa ou contas a receber
4

Modularizao
Mdulo pode ser s uma p ro c e d u re ou fu n c tio n (prog. in the small), ou
pode conter diversos componentes agrupados e com um propsito em
comum:
tipos
Um mdulo
constantes
ENCAPSULA
variveis
seus
procedures
componentes.
functions
...
Para conseguir ter uma interface pequena, um mdulo deixa poucos
componentes visveis para fora dele. Esses componentes so
exportados pelo mdulo. Os outros componentes permanecem
escondidos (hidden) dentro do mdulo, sendo usados para ajudar
na implementao dos componentes exportados.
5

Modularizao
Um mdulo uma unidade cujos elementos estruturais esto
fortemente conectados entre si e (relativamente) fracamente
conectados com elementos de outras unidades.
(M c C le lla n d a n d R u m e lh a rt, 1995)
So estruturalmente independentes mas que funcionam juntas.
Mdulo de vendas ( proc. Realizar venda, forma_pag, lanar_caixa_avista,
lanca_contas_receber_prazo, cartao_credito)
Este mdulo deve receber informao do modulo de Gestao_produto (cod_prod,
valor, estoque)
Este mdulo deve enviar informao para o modulo Financeiro (total_venda,
venda_avista, venda_prazo, venda_cartao)
6

Modularizao
G ra n u la rida de do s m dulo s : A granularidade do artefato de
software um fator relevante que ajuda a definir o conceito de
mdulo.
Uma instruo, por exemplo, tem um nvel de granularidade
menor, que uma funo ou procedimento.
Uma biblioteca, que agrupa diversos funes e procedimentos
tem uma granularidade maior.

Instrues

Programming
in the Small

Programming
in the Large

Funo ou
procedimento

Biblioteca
7

Modularizao
Custo total do software
Custo da Integrao
Regio do Custo Mnimo

Custo ou esforo

Custo / Mdulo

Nmero de Mdulos

S u b m o du la rida de : mdulos grandes e caros, alm de difceis de


entender e modificar devido a sua estrutura monoltica;
S u pe rm o du la rida de : infinidade de pequenos mdulos com custo
elevado devido a necessidade de integrao entre mdulos

Modularizao
Vantagens da Modularizao
Reduz a complexidade
Possibilita o desenvolvimento em paralelo
Facilita a modificao
Possibilita a reutilizao

Abstrao x Modularizao
A abstrao e a modularizao
complementam-se reciprocamente.
Ex: empresa automobilstica projetando um
novo carro.
Abstrao e modularizao em software:
Tentamos identificar subcomponentes que
podemos programar como partes independentes.
Tentamos utilizar esses subcomponentes como
se fossem partes simples sem nos preocupar
com suas complexidades internas.
10

Modularizao
Um bom projeto modular re duz a complexidade, fa c ilit a a
mudana e resulta numa implementao mais f c il ao estimular o
de s e n v o lv im e n t o pa ra le lo de diversas partes de um sistema.
Caractersticas importantes para se obter bons mdulos:
Ocultamento de informao
Independncia funcional
Coeso (alta)
Acoplamento (baixo)
11

Ocultamento de informao
Mdulos devem ser especificados e projetados de tal forma que as
informaes (procedimentos e dados) contidas num mdulo sejam
inacessveis a outros mdulos que no necessitem destas
informaes.

Reduz a ocorrncia de efeitos colaterais

Limita o impacto global das decises locais de projeto

Enfatiza comunicao atravs de interfaces controladas

Desencoraja o uso de dados globais

Leva ao encapsulamento - um atributo de projeto de alta qualidade

Resulta em qualidade de software


12

Ocultamento de informao
Um subconjunto das propriedades do mdulo escolhido como
parte pblica, oficial, disponvel para os clientes.

Sistema Acadmico: Modulo RH disponibiliza parte publica (nome do professor) parte secreta
(salario, nmero dos dependentes)
Sistema Comercial : Modulo Gesto Produtos - disponibiliza parte publica (produto, preo_venda,
estoque) parte secreta (custo_mercadoria, fornecedores)
Sistema Contbil : Modulo Fiscal - disponibiliza parte publica (total de vendas, total de impostos)
parte secreta (calculo dos impostos).
13

Independncia funcional
A independncia funcional conseguida desenvolvendo-se mdulos
com funo de um s propsito" e "averso" a interaes
excessivas com outros mdulos.
Decorrncia direta da modularidade e ocultamento de informao
Obtida quanto o Mdulo tem finalidade nica e averso a
interao excessiva com outros mdulos
Um software com mdulos independentes mais fcil de ser
desenvolvido e mais fcil de ser mantido.
A independncia funcional de um mdulo medida usando-se dois
critrios estruturais: c o e s o e a c o pla m e n t o .
14

Independncia funcional
Acoplamento (coupling)
Descreve a interconectabilidade entre os mdulos numa estrutura
de software.
Oquo "amarrado" uma parte do sistema s outras partes.
Oquo dependente uma parte do sistema das estruturas internas
das outras partes do sistema.
Acoplamento diz respeito a independncia entre componentes, a
medida de impacto que a alterao da implementao de um
componente tem sobre outros.

15

Independncia funcional
Coeso (Cohesion)
medida da unidade funcional relativa de um mdulo.
Indicao qualitativa do grau em que um mdulo focaliza apenas
uma coisa
Um mdulo coeso realiza uma nica tarefa dentro de um
procedimento de software
Alta coeso -> maior independncia funcional
Coeso a medida em que os componentes de um mdulo esto
relacionados, se eles tm responsabilidade em comum ou se foram
apenas agrupados por acaso.
16

Independncia funcional
Cada mdulo deve ser a lta m e n te c o e s o (h ig h ly c o h e s iv e )
mdulo visto como "unidade"
componentes internos a um mdulo esto relacionados
Mdulos devem apresentar b a ix o a c o pla m e n to (lo w c o u p lin g )
mdulos possuem poucas interaes com outros mdulos
podem ser compreendidos separadamente

17

Independncia funcional
O acoplamento est diretamente relacionado com a coeso.
O acoplamento e a coeso influenciam a qualidade do design de classes.
Vantagens de mdulos a lta m e n te c o e s o s (h ig h ly c o h e s iv e )
reutilizao de classes e mtodos
mudanas bem localizadas
Vantagens de mdulos com b a ix o a c o pla m e n to (lo w c o u p lin g )
entender uma classe sem ler outras
alterar uma classe sem afetar outras
coeso e

acoplamento melhora a manutenibilidade do sistema!

18

Acoplamento
Quanto menor o nmero de conexes
entre os mdulos, menor a chance do
efeito cadeia (propagao);
Deseja-se trocar um mdulo com um
mnimo de riscos de ter de trocar outro
mdulo;
Deseja-se que cada mudana do usurio
afete o mnimo de mdulos;
Enquanto estiver sendo realizada a
manuteno de um mdulo, no deve
existir a necessidade de se preocupar
com a codificao interna de nenhum
outro mdulo.

elevado
por contedo
comum
externo
por controle
por imagem

por dados

baixo
19

Acoplamento por dados


Dois mdulos so acoplados por dados se eles se comunicam por
parmetros
Lista simples de argumentos dados simples so passados,
existe a correspondncia de itens um a um.

baixo

alto

20

Acoplamento por imagem


Existem estruturas de dados mais complexas na lista de
argumentos.
Ocorre quando dois mdulos fazem referncia a uma mesma
estrutura de dados. Este tipo de acoplamento fornece mais dados
do que o necessrio a um mdulo.
registro aluguel =
combustivel
modelo do carro
data de locao
km percorrida
locatario
fim

baixo

alto

21

Acoplamento por controle


Dois mdulos so acoplados por controle se um passa um grupo
de dados (controle) para o outro para controlar sua lgica interna.
Em outras palavras: x e y se comunicam por parmetros sendo
que um deles um flag que controla o comportamento de um dos
mdulos
Uma varivel que controla decises em um mdulo superior
passada como parmetro para o mdulo subordinado
impossvel para o componente controlado funcionar sem a
orientao do componente que o controla.
baixo

alto

22

Acoplamento por controle


Mdulo: Juntar registros de clientes
Incio
Obter como_proceder
Executar Controlar E/S do sistema
enviando como_proceder
recebendo registro mestre e/ou
registro de transao
Fim

Valores
1 2 3 -

baixo

de Como proceder:
Obter prximo registro mestre
Obter prximo registro de transao
Obter ambos

Decompor a operao em
mltiplas operaes
primitivas
alto

23

Acoplamento por controle

Mdulo: Juntar registros de clientes


Incio
Obter como_proceder
Caso como_proceder
1: Executar Obter registro mestre
recebendo registro mestre
2: Executar Obter registro de transao
recebendo registro de transao
3: begin
Executar Obter registro mestre
recebendo registro mestre
Executar Obter registro de transao
recebendo registro de transao
fim
Fim

baixo

alto

24

Acoplamento externo
Ocorre quando um mdulo se comunica ou colabora com
elementos de infra-estrutura como funes de sistema
operacional, facilidades de banco de dados, funo de
telecomunicaes. T a m b m qu a n do h im po s i o de
pa dr e s
e x t e rno s ,
pa ra
c o m un ic a o
e n t re
a plic a t iv o s .
necessrio, mas deve ser limitado para no comprometer a
adaptabilidade do software.
Ex: Software que utiliza a API do Windows
Software que utiliza servios do Linux como agendamento de
eventos
Uso de Store Procedures de um Banco de Dados especfico
(SQL Server)
Formato de Dados de uma empresa especfica.
baixo
alto

25

Acoplamento por rea Comum


Quando vrios mdulos fazem referncia a uma rea de dados
global
Existe quando o projeto est organizado de modo que os dados
estejam acessveis a partir de um repositrio de dados comum:
Dificuldade em determinar qual componente responsvel pela
definio de uma varivel com um determinado valor.

rea de Dados
Comum

baixo

alto

26

Acoplamento por rea Comum

baixo

alto

27

Acoplamento por contedo


Dois mdulos apresentam
acoplamento por contedo se um
faz referncia ao interior do outro.
Ocorre quando um mdulo faz uso
de dados ou controle mantida dentro
dos limites de outro modulo.
Ou quando so feitos desvios para o
meio de um mdulo.
Tal acoplamento quebra o conceito
de caixa preta caixa branca ou
transparente
Viola o Ocultamento de informao
Prejudica reuso, manuteno e
testes.

baixo

alto

28

Coeso

A coeso de um mdulo o grau de


relacionamento entre atividades que este
realiza (mtodos, responsabilidades)
Quanto maior o grau de coeso melhor
A coeso e o acoplamento esto inter
relacionados, pois a coeso de um
mdulo geralmente determina o quanto
ele ser acoplado a outros mdulos.
Boa coeso uma forma de minimizar
acoplamento
Um mdulo coeso realiza uma nica
tarefa dentro de um procedimento de
software
Alta coeso maior independncia
funcional

alta
funcional
sequencial
comunicacional
procedural
temporal
lgica

baixa

coincidental
29

Coeso
Indicao qualitativa do grau em que um
mdulo focaliza apenas uma coisa.
A escala da coeso no linear
desnecessrio determinar o nvel preciso de
coeso
importante saber identificar a existncia de
baixa coeso

30

Coeso
Considerando componentes como:
Classes em um pacote,
Responsabilidades de um classe,
Linhas de cdigo em um mtodo

Coeso a medida em que os componentes


de um mdulo esto relacionados, se eles
tm responsabilidades em comum ou se
foram apenas agrupados por acaso
31

Coeso funcional
Um mdulo com coeso funcional contm elementos que
contribuem para execuo de uma [e apenas uma] tarefa
relacionada ao problema.
Contm todos os elementos e apenas aqueles necessrios para
realizar uma nica tarefa bem definida.

baixa

alta

32

Coeso seqncial
As funes internas esto envolvidas em atividades de tal forma,
que os dados de sada de uma atividade sirvam como dados de
entrada para a prxima.
Este fluxo estabelece uma seqncia de execuo das funes.

Mdulo: Gravar dados do cliente


Incio
Abrir arquivo
Gravar dados
Fechar arquivo
Fim

baixa

alta

33

Coeso seqncial

Mdulo: Exibir consulta


Incio
Abrir arquivo da conta
Consultar nmero da conta
Exibir dados da conta
Fim

baixa

alta

34

Coeso Comunicacional
Um mdulo tem coeso de comunicao quando suas atividades
esto relacionadas pelo uso da mesma entrada ou da mesma
sada
Os elementos de processamento utilizam-se da mesma rea de
estrutura de dados.

baixa

alta

35

Coeso Procedural (Procedimental)


Os elementos do mdulo encontram-se juntos em um
procedimento adotado para solucionar o problema (em uma
mesma unidade do algoritmo).
Os elementos de processamento de um mdulo esto
relacionados devem ser executados numa ordem especfica

baixa

alta

36

Coeso Procedural
act tratarSaque

v erificaLimiteCredito

Possui lim ite?


true

efetuarSaque

baixa

false

bloquearSaque

alta

37

Coeso Temporal
Mdulo cujos elementos esto envolvidos em atividades que
esto relacionadas no tempo. Ou seja, esto agrupados no
mesmo mdulo porque so processados no mesmo intervalo de
tempo.
Tem alto acoplamento com vrios outros mdulos
Exemplos comuns:
Funo de inicializao (main) que prov valores defaults para
uma srie de funes diferentes
Funo ou bloco de cdigo de finalizao que limpa variveis
internas antes de terminar execuo
baixa

alta

38

Coeso Temporal

Difcil de modificar, pois ser necessrio olhar vrios mdulos do


software (que dependem destas informaes) quando houver
alguma mudana: utiliza dados de vrios mdulos.
Tambm dificulta o reuso: como reutilizar todo o mtodo
Inic ia liza rV a ria v e is ?
baixa

alta

39

Coeso Lgica (ou de utilidade)


As tarefas realizadas so relacionadas logicamente
Os elementos do mdulo esto envolvidos em tarefas similares.
Elementos contribuem para atividades da mesma categoria geral,
onde a atividade ou as atividades a serem executadas so
selecionadas fora do mdulo.
Dificulta a manuteno,
testes e reuso;

baixa

alta

40

Coeso Coincidental
As tarefas executadas no mdulo se relacionam fracamente.
Os elementos no tm razo aparente para estarem juntos.
Um objeto no representa nenhum conceito do domnio e nem da
arquitetura
Falsa idia de reuso e
componentizao;

baixa

alta

41

Tipo de coeso
Estratgia para identificar o tipo de coeso de um determinado mdulo

42

Concluso
A grande meta na modelagem de um sistema orientado a objetos
prover uma alta coeso e um baixo acoplamento, garantindo
assim um software de boa qualidade e facilitando assim mudanas
em suas estruturas de dados e de funcionalidades internas.

43

S-ar putea să vă placă și