Você está na página 1de 10

/2*,1

%XVFDU

comentrios

favorito (2)

marcar como lido

para impresso

anotar

Entendendo Coeso e
Acoplamento
Coeso e acoplamento, so princpios de engenharia
de software muito antigos, que embora sejam simples,
muitas das vezes so ignorados; por conta disto, os
projetos de software acabam sendo prejdicados por
um mau design. Neste artigo entenderemos o que
estes princpios significam e como eles podem nos
ajudar a ter um design maduro e eficiente em nosso
software.

15

Gostei(8)

(1)

CoesoeAcoplamentosoprincpiosdeengenhariadesoftwaremuito
utilizados.Quandoqueremosterumaarquiteturamaduraesustentvel,temosquelevar
emcontaestesdoisprincpios,poiscadaumdelestemumpropsitoespecficoquevisa
melhorarodesigndosoftware.Oqueacontecequemuitaspessoasnosabema
diferenaentreeleseacabamnoconseguindoobterosbenefciosquecoloclosem
prticanahoradesedesenharaarquiteturadeumsoftware.
Coesoest,naverdade,ligadoaoprincpiodaresponsabilidadenica,quefoi
introduzidoporRobertC.Martinnoiniciodosanos2000edizqueumaclassedeveter
apenasumanicaresponsabilidadeerealizlademaneirasatisfatria,ouseja,umaclasse
nodeveassumirresponsabilidadesquenososuas.Umavezsendoignoradoeste
princpio,passamosaterproblemas,comodificuldadesdemanutenoedereuso.Observe
oexemploabaixo:

publicclassPrograma

publicvoidExibirFormulario(){

//implementao

publicvoidObterProduto(){

//implementao

publicvoidgravarProdutoDB{

//implementao

Comovistonoexemploacima,aclasseProgramatemresponsabilidadesquenoso
suas,comoobterumprodutoegravlonobancodedados.Ento,dizemosqueestaclasse
noestcoesa,ouseja,elatemresponsabilidadesdemais,eoquepior,
responsabilidadesquenososuas.Observeabaixooutroexemplo:

publicclassPrograma

publicvoidMostrarFormulario(){

//Implementao

publicvoidBotaoGravarProduto(){

Produto.gravarProduto()

Vemosnoexemploacima,umaclaraseparaoderesponsabilidades,oquecontribuipara
umdesigndesacopladoeorganizado.Oformulrionoassumeopapeldecadastraro
produto,elepedeaquemtemaresponsabilidadeparaquefaataltarefa.Oquetemosque
teremmentequeumaclassedeveserresponsvelporexercerumanica
responsabilidadeefazeroutrasclassescooperaremquandonecessrio.
Joacoplamentosignificaoquantoumaclassedependedaoutraparafuncionar.Equanto
maiorforestadependnciaentreambas,dizemosqueestasclasseselasestofortemente
acopladas.Oforteacoplamentotambmnostrazmuitosproblemas,problemasat
semelhantesaosqueumcenriopoucocoesonostraz.Observeodiagramaabaixo:

Comopodemosvernacadeiadeclassesacima,oforteacoplamentonamesma,
tornamuitocustosoasuamanutenoeoseugerenciamento,poisqualquermudanavai
afetartodaacadeiadeclasses.Asaidaparacenrioscomoeste,oquechamamosde
InversodeControlequefoiabordadadoemumpostaqui.Eumamaneirademudaro
quadroacima,seriainverterocontroleeutilizaropadrodeinjeodedependncia,para
diminuiroacoplamentoeevitarfuturosproblemas.Obseverodiagramaabaixocomas
devidasalteraes:


Percebacomoadependncaestnadireooposta,ouseja,nomaisde
implementaesconcretasqueestobaseadososrelacionamentosentreasclasses.
Observequeutilizarabstraes,mantmumcenrioqueestarpreparadoparaos
impactosqueaspossveismudanaspoderiamtrazer.ReparequeaclasseProdutose
relacionacomumaabstrao(interface)deDBWrapper,ouseja,temumaclasse
chamadaDBWrapperSqlServerqueimplementaestainterface,amanh,obancodedados
passaraseroracle,bastaadicionarumaclasseDBWrapperOracleparaatendera
mudanadebancodedados,.Trabalhandodestamaneirapassamosanotermedodas
mudanas,poisemsetratandodesoftware,elasiroocorrercommuitafrequncia,eno
tivermosumcenriosuscetvelaelasencontraremossrioproblemasparaevoluiro
software.
Sabemosquenomundorealnemsemprepodemosterumcenrioideal,que
comumbaixoacoplamentoeumaaltacoeso.Mascomoarquitetos,temosquesaber
tomaradecisocorreta,poisdeterminadasdecisesnopoderoserrevertidas,
dependendodafaseemqueestiveroprojetoouotipodedecisotomada.Terclassescom
responsabilidadesclaraseumbaixoacoplamento,emboranosejafcildeserem
construdas,nostrazbenefcioscomobaixoimpactoemumapossvelmanuteno,
gerenciamentoemudananonegciofacilitados.Tambmnopodemosesquecerqueas
aplicaesevoluem,mudame,muitasdasvezes,setransformam.Seignorarmosas
melhoresprticasnahoradedesenharumaarquitetura,poderemostersriosproblemas.E
paranosauxiliar,temosoprincpiodaresponsabilidadenicaeainversodecontrole,cujo
objetivoobterseumcenrioderesponsabilidadesclarasentrenossasclasseseum
baixoacoplamento.

Umforteabraoeatoprximopost.


&DGX
$QDOLVWD'HVHQYROYHGRUDWXDQGRQRPHUFDGRDPDLVGHDQRV$WXDOPHQWHSUHVWDQGRVHUYLoRSDUD
JUDQGHHPSUHVDGHWHOHIRQLD

Oquevocachoudestepost?
Gostei(8)

(1)

+ Maiscontedosobre.net

7RGRVRVFRPHQWDULRV 

3RVWDUG~YLGD&RPHQWiULR

0HXVFRPHQWDULRV

AlexandroLopesPereira
Cadu,tudobem?
Esteoprimeiroartigoseuqueleioepossodizerqueficoumuitobom,poisfoisuscintoedeu
umabaselegalparaoassunto.
Jdesenvolvoem.NETh4anosmaisoumenoseestoupartindoagoraparaapartede
arquiteturaeartigoscomoesteajudamdeformabemsimplesaentenderalgunsconceitos.
Noseisevocarquiteto,maspoderiamedaralgumasdicasdeporondecomearaestudar?
EstoulendoolivroUseaCabeaPadresdeprojetoseestougostando.
Teriaalgumoutromaterialquevocrecomendaria?
abseparabnspeloartigo.
[h+1ano]Responder


[autor]Cadu
Primeiramentemuitoobrigadoedesulpeademoraemresponder!!!,

Amigoaprimeiracoisaquevocprecisaestudar,soosprincipiosbsicosde

arquiteturacomoporexemplo,osprincpiosSOLID,Inversodecontrole,injeode
dependnciaenfimcoisasquesoimprescindveisqueumarquitetoprecisasaber.Tem
umgrupodeusuriosmuitobomaqualeuparticipo,queo.NETArchitects,lrolam
bastantediscussessobreassuntosrelacionadosaarquitetura.
Comrelaoamaterialaindicar,temolivrodofowlersobrepadresde
arquitetura(patternsofenterpriseapplicationarchitecture)temtraduzidomaisa
traduonoboano,oCleanCodedoUncleBobtambmtememportugused
paraentenderlegal,ositedopatternsandpraticestimedamicrosoftdeboasprticas
lvocencontrainclusiveguiascomarquiteturadereferncia,oblogdogiovannibassi
(http://unplugged.giggio.net/unplugged/default.aspx)esevoctiveralgumadvida
mecolocaadisposioalheajudar.claro,estasdicassoapenasalgunsdosmeios
quevocpodeseguirparaaprenderarquitetura.Qualquercoisaestouadisposio.

Abraos
[h+1ano]Responder


BugmeNot
Textosonolentocomfaltadedomniodocontedoabordado.
[h+1ano]Responder


WesleyYamazack
OlBugme,obrigadopeloseucomentrio/crtica,issonosajudaaevoluircadavezmais
emnossaspostagens.
Umabrao.
[h+1ano]Responder


3XEOLFLGDGH

Mais posts
Video aula

Realizando consultas com JPA e JPQL


Artigo

Behavior-Driven Development na plataforma .NET


Video aula

Clubes nacionais e internacionais - Curso de ASP.NET MVC 5


- Quiron Loja Virtual - Aula 60
Video aula

Clubes de futebol - Curso de ASP.NET MVC 5 - Quiron Loja


Virtual - Aula 59
DevCast

Transio de desenvolvedor para gerente de projetos


Artigo

Entity Framework: Usando Stored Procedures


Listar mais contedo

$QXQFLH _ /RMD _ 3XEOLTXH _ $VVLQH _ )DOHFRQRVFR

'HY0HGLD

+RVSHGDJHPZHESRU3RUWD:HE+RVWLQJ