ebook img

Introdução à Arquitetura de Design de Software PDF

266 Pages·2011·3.155 MB·Portuguese
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Introdução à Arquitetura de Design de Software

© 2012,CasadoCódigo TodososdireitosreservadoseprotegidospelaLeinº9.610,de10/02/1998. Nenhumapartedestelivropoderáserreproduzida,nemtransmitida,semauto- rizaçãopréviaporescritodaeditora,sejamquaisforemosmeios: fotográficos, eletrônicos,mecânicos,gravaçãoouquaisqueroutros. CasadoCódigo Livrosparaoprogramador RuaVergueiro,3185-8ºandar 04101-300–VilaMariana–SãoPaulo–SP–Brasil CasadoCódigo “AnossaavóCéres” –PauloSilveiraeGuilhermeSilveira “Aminhaesposa,meuspaisemeuirmão” –SérgioLopes “Ameuspaiseesposa” –GuilhermeMoreira “Ameusamadospais” –NicoSteppat “Aminhaamadaesposaefamília” –FabioKung i CasadoCódigo Agradecimentos DepoisdedoisanosministrandoocursodeArquiteturaeDesignnaCaelum,além decincoanoscomumblogdemaisdeduzentosartigostécnicos,pareciafácilescre- versobreumassuntoquefazpartedonossodiaadia. Terrívelengano. Emvezdosseismesesprevistos,passaram-sedoisanos. Doisanostrabalhando de forma a tornar acessível práticas e trade-offs que aparecem com frequência na plataforma.Sãoproblemasqueosdesenvolvedorespassamaenfrentarrapidamente aoganharmaisexperiênciaefamiliaridadecomJava. Juntar esse conhecimento não seria possível sem a existência do GUJ.com.br, criadoem2002,noqualosusuáriosjátrocarammaisdeummilhãodemensagens. Nós,autores,participamosativamentedofórum,oqualnãoatingiriaessamagnitude semaajudadoRafaelSteil. Tambémnãoseriapossívelorganizaressasideiassemacolaboraçãodediversos amigos que as revisaram e discutiram os temas conosco: Lucas Cavalcanti, David Paniz,CeciliaFernandes,AlbertoSouza,BrunodeOliveira,FábioPimentel,Vinicius RobertoeAdalbertoZanata. Agradecemos aos que participaram e participam da elaboração do curso FJ-91 naCaelum:AdrianodeAlmeida,AndersonLeite,JoséDonizettieDouglasCampos. UmaespecialmençãoaoMaurícioAniche,que,alémderealizarumaminuciosa revisão,nosincentivouatodomomentoamelhorarotextoeacortaroquenãofosse essencialparaolivro. iii CasadoCódigo Sobre os autores PauloSilveiraébacharelemestreemciênciadacomputaçãopelaUSPecofundador daCaelum. PossuiexperiênciacomdesenvolvimentowebnaAlemanha,passando peloIBOPEepordoisanoscomoinstrutordaSunMicrosystems.Éumdosfunda- doresdoGUJ.com.br,editortécnicodarevistaMundoJecriadordoVRaptor. GuilhermeSilveiraélídertécnicoecofundadordaCaelum.TrabalhoucomJava eTibconaAlemanha,comitterdoXStreamecriadordoRestfulie. Concentraseus estudosemserviçosREST.Programadorexperiente,participoudasfinaismundiais deprogramaçãonoJapãoenoCanadádoICPCpelotimedaUSPeéarquitetoJava certificado(SCEA5). SérgioLopesécoordenadornaunidadeSãoPaulodaCaelum.Programadesde 2000 e desenvolve em Java desde 2003. É arquiteto Java certificado (SCEA5), mo- derador do GUJ e participante ativo da comunidade através de palestras, projetos, cursoseartigos. GuilhermeMoreiraéinstrutoreconsultorpelaCaelum,ondefocaseutrabalho principalmentecomJavadesde2005,comprojetosinternosetambémdiretamente nosclientes.FormadoemProcessamentodeDadospelaFATEC-SPearquitetoJava certificado(SCEA5),escreveartigosparaarevistaMundoJ,alémdeserresponsável pelaunidadedeBrasíliadaCaelum. NicoSteppatéengenheirodecomputaçãoaplicadapelaFachhochschuleBran- denburg.Éinstrutor,consultoredesenvolvedorháseteanoscomJavanoBrasilena Alemanha.AtuanaunidadeRiodeJaneirodaCaelumeéarquitetoJavacertificado (SCEA5). FabioKungéengenheirodacomputaçãopelaEscolaPolitécnicadaUSP.Passou porweb,Java,Ruby,experiêncianaAlemanha,instrutornaCaelum,responsávelna Locaweb por Cloud Computing e no Heroku em São Francisco. É arquiteto Java certificado(SCEA5). v CasadoCódigo Prefácio PorJimWebber. OArquiteto Quando penso sobre o termo “arquiteto”, é sempre com sentimentos confusos, como suspeito que seja o caso para muitos de nós que trabalham com desenvolvi- mentodesoftwareatualmente.Duranteminhacarreira,ouvidiversasopiniõesdife- rentesparaessetermo,mas,paramim,oqueéprincipalparaserumbomarquiteto possobuscardosmeusprimeirosdiascomodesenvolvedorprofissional(outentando serumprofissional). Meuprimeiroempregopareciaserintimidador-apósdiversosanosdepesquisa acadêmicadentrodeumdepartamentodeciênciadecomputaçãoemumauniver- sidade, entrei em uma empresa que havia comprado recentemente uma startup de middleware Java gerenciada por um grupo de amigos. Esses amigos trabalhavam noramodemiddlewarepordécadase“hackeavam”emJavaatémesmoantesdeele ter esse nome. Sair da zona de conforto da computação de alto desempenho, com tecnologiasasquaiseuestavaacostumado, epularparaumdomínionovodepro- cessamento de transações distribuídas com foco em CORBA e J2EE era realmente intimidador. Apesardeterumsensorazoáveldeteoriadesistemasdistribuídos,eu jamaishaviaescritoCORBAouJ2EEcomousuário, muitomenoscomodesenvol- vedordemiddleware.Foramtemposcomplicados. No laboratório onde comecei a trabalhar, meus colegas ostentavam nomes de cargosbaseadosemsuascapacidades(e,suspeito,longevidade!). Possuíamosenge- nheiros,engenheirossenioresearquitetos,todososquaistrabalhavamarduamente em desenvolver um excelente middleware de transação, workflow e mensageria. Comoumengenheirosênior, eueraumpoucomenosverdedoqueosapenasen- genheiros,masambosrecebíamosordensdosarquitetos-umportime-queeram oráculos.Osarquitetosquelideravamnossotimeconheciamocódigodetrásparaa vii CasadoCódigo frente,mastambémconheciamseuscampos.Erasemprepossívelconfiarqueseriam capazesdeexplicarmodelosdetransaçãodistribuídacomplexosemostrarcomodi- versos padrões e abstrações do código os suportavam. Eles também conheciam as armadilhaseconseguiamdetectarcedoescolhasdedesigneimplementaçãoruins, umavezqueeramcapazesdeveràfrente,oupelomenosvermaislongedoqueeu conseguia. Não acho que disse algum dia para esses arquitetos - talvez por causa do meu orgulhojuvenil-oquãoimportanteelesforamemdelinearmeupensamentoecom- portamento. Entretanto,sempreaspirei(ealgumasvezessucedi)sercomoeles,co- nheceratecnologiaprofundamente,entenderocontextonoqualelaestásendoem- pregada,guiareserguiadopeloscolegasdemeutime. Essafoiumaaspiraçãoque leveiparameupróximoempregoemumaempresaglobalmuitoconhecidaeadmi- radanoramodeconsultoriadeTI. Aoentraremminhanovaempresa,decidiquejáhaviavistobastantesoftwaree erabomosuficienteemescrevercódigo,eentãomedeclareiumarquiteto. Aoen- contraralgunsdemeusnovoscolegaspelaprimeiravez,fuicalorosamenterecebido eperguntadosobrequalseriameupapel.Respondiqueeueraumarquiteto;algoque penseiquedariaumsentidodecompetêncianonívelmicrodapilhadetecnologias, enonívelmacroaoredordaconstruçãodesistemas.Fiqueiatônitoaodescobrirque fuirepreendidoporessarespostaefiqueimeperguntandooqueacabaradeaconte- cer,afinal,eunãohaviaentradoparatrabalharcomessaspessoasdevidoareputação queelespossuíamnodesenvolvimentodesoftwareeAgile? Nãodemoroumuitoparaqueeuentendesseocontexto.Meuscolegastrabalha- vamcomconsultoriaháalgunsanoseconhecerammuitos“arquitetosexperientes”. Mas esses não eram o mesmo tipo de pessoa que eu admirava em meu primeiro trabalho; eram arquitetos perigosamente ultrapassados, com pouca habilidade em entregarsoftware, eumtalentosemfimparacausarconfusãoecriarpolíticascor- porativas. Eeu, aparentemente, tinhameapresentadocomoumdesses. Nãoeraa melhormaneiradecausarumaboaimpressãoaosmeusnovoscolegas. Ainda assim, durante os 6 anos e nos 10 países em que trabalhei, me descrevi comoarquiteto.Euestavaemumamissãoderecuperarovalordessetítulo,ecomo passardotempoobtivealgumsucesso. Começamosapensaremumarquitetonão sócomoo“melhorprogramador”ouum“pesomorto”,massimcomoumpapelque considera os detalhes de nível macro em um time que entrega software - como a integraçãocomoutrossistemasfuncionará,comofalhaserecuperaçõesserãotraba- lhadas,comoavazãoserámedidaegarantida. viii

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.