Professional Documents
Culture Documents
%XVFDU
comentrios
favorito (2)
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
'HY0HGLD
+RVSHGDJHPZHESRU3RUWD:HE+RVWLQJ