Documente Academic
Documente Profesional
Documente Cultură
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
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.
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
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
baixo
alto
20
baixo
alto
21
alto
22
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
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
rea de Dados
Comum
baixo
alto
26
baixo
alto
27
baixo
alto
28
Coeso
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 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.
baixa
alta
33
Coeso seqncial
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
baixa
alta
36
Coeso Procedural
act tratarSaque
v erificaLimiteCredito
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
alta
39
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