Você está na página 1de 50
4 Ciéncia do Desenvolvimento de Software As Leis Fundamentais do Ke) ( Talalrapo nl rim, ma mais dese fer ua aera cao ce teorg de manu mina, meso que date neo de aera a Implement malar Seo exo de mantic imino fealnete storm cadaver mals dee! como pio na 2 Sore “uma escolha melhor do que outras possibilidades. + 8, _ fay Com frequéncia, projetar um sistema que teri esforgo de manutengio rene decrescente exige um esforso de implementacao significativamente J Pa. -maior — exige-se muito mais trabalho ¢ planejamento de projet. Con- tid lembrese dquo eogo depen que sempre uh (Tee ey {oor insignificant so tomar decsbs de roca e deve grament set La ae east ee ae ‘Em suma: 2 ry a _Emais importante reduzir o esforco de manutengao do que reduzir 0 esforgo_ a a eimplenentagia. a Essa uma das coisas mais importantes que h para saber sobre projeto Ph de software. Aer com un lr ft mas ao ainda so mals dee Ma vegicemenc lepers! Come comes sid toa qed deo em uncut dermanutegl occ penn Cao eso de manieno diminl coro tpo? Exe €o sino dese como temp vot io pode color enumerate de grande pare do estan dee ra Mas ante de harmon, petigosa temas que examina fururo mais um pouguinba « tes fondest oP Soar ‘A qualidade d projeto E muito facil escrever software que ajuda uma pessoa, imediatamente, E muito mais if excreversftwareque suda miles de pessoas agora «que cominve fae av durante décadas no futuro Mas onde vai estar ‘a maira do expo de progeamagoe quando amuoriadenes wrios stark usando osoftwate? Agra mesmo ou naguca dads por ve -Aresposta € que havert muito abo de programas a se toe Inuit mais suis ajuda mals no ure do que no presente Seu sofware terdque competi exit future oedongo de manutengo onimen de wudrioscexeria. ‘Quando ignoramos ofato de que hé um fururo ¢fazemis as cosas {que “apenas funciona” no presente nosso software fica dif de se submeter 4 manutengto no Futura Quando o softwar € diel de se submeter manutengla ¢ difcl fat-lo consinuaraajudaras pessoas {oma de nossas metas em projeta de software. Se nfo puder adiionat ‘ows recutSos elo puder corgi problemas, vot acabard tendo um “software ruin Ele parade sjadaros seus usuios fea cheio de eros Isso nos leva Seguin regra O nivel de qualidade de seu projet deve se proportional extensio do tempo fururo em que seu sistema continuae a judas pessoas Se oo estivr escrevendo software que serdusado apenas nas pixma horas no precisa colocar muito esforgo no projet Mass seu software der ser wsado nos prximos der anos esto acontce com muito mais frequénciado que voc poderia espera mesmo que wed pense ques vai ser usado pelos primis eis meses) eno voc tem gi mpor mito trabalho no projeta. Quando em divida, projete seu software como ele fosse ser usado durante muito muito tempo: ndo se feche em nenhum método de fazer as coisas, mantenha-se flexive, ndo tome nenhuma decsdo que nfo posa nunca muda edé muita atengdo 20 projet nto quando projtamos software, o futuro deve ser nosso foeo princi pal, Contud, uma das cosas mas importants a saber sobre qualquer tipo de engenharia€ ess algunas cosas sobre o future qu vat no sabe. De fata quando se tata de projet de software oo simplesmente no pode saber maioria das coisas sobre o futuro Cerromais comum e desastroso que 0s programadores cometem é prever algo, ‘estan quid vet dnp ae Per erp magne ue um pogramador enka et um twa 198 que crrigia equaes con problemas He lo pode crt {Broads mac pare dele ra tame depend de comico Alege Funcoravn estan Ea wc geet coc porque ss psoas ndo amas cages Agu prgamador previ ees par erp rede =a ql realmente no Pecan Firs if jot! rer fet Gres pr fr ee pee rinsed O lags pos whet a Boao pats sc ce peek pips aa & Bip peer pe glen piecing es eset nas neers oie acters eee eee ee ee ep), binarteneans pion ‘Agora isso pode soar como o exato oposto do que vimos dizendo até agora neste capitulo, mas no € O futuro é coisa mals importante a considera ao tomar decisdes de projet. Mas hé uma diferenga ent projtar de modo a permite akerago Futura centr prever futuro ‘Como analog digamos que oo em uma escola entre comer mort de fome.Voctndo precisa prever 0 futur a fim de fazer ess exolha — ‘oo? sabe que comer éa melhor escola, Por qu? Porque ela © manters vivo, ¢ estar vivo conti para um futuro melhor do que estar morta © fuuro ¢ importante e quetemos consideri-lo em nossas decisis. ” ‘enim rj Sata Escolhemos comer agora porque contibui para um futuro melhor Mas futuro no tem que se prevsto~ no temos que dizer algo especfco como: “Estou comendo agora porque amanha tere que salvar a vida ‘de um bebé" Nio importa © que acontsa aman, sri um aman melhor se voc comer agora em vez de morrer de fore De modo semethante, no projet de software podemos toma certas ‘agudecampe Por exemple uel pres veri Se 0 ss €Concu esreveleralmente a palavea "Concuida” no ea ‘Alem dis, ocdgn nfo cro pate eres: Onde programa tem campor methane 9 deemed cra ecola cio ena0 0 !modifca um pouco pars ono amps. © eédigo funciona. O arquivo tem 3 mil ines Ele nessa quase irae pee Virion mes maitre ce demoed deo proj, Umino desemolelor cepa e¢ digas pra zeta manuen dase proj Ee rapaarentedescobre que ese cig fl de aerate ‘le Dra ua parsedocidgyambr mc aera mas ue artes Ae fre wiih Bde tele meno Se ea ‘cosa as dens prt to alas sem nena expla Sema gc voc simplemente pres ero argu ino toa 2 para fier uma aero (Or eliemescomepam a pedir novos recursos A principa:© novo Asemolede aro psi para plement esta caren le ‘icon ainda maiscigo ase argu Ele acaba tendo Smal inkas Posterormene os dienes comevam 2 pedi cuss que simplesmente ro podem se implements com ene projet. les queren erat Inioagies ale ast por emall mas ese digo apenas weabalha ‘om um formula Ele od pojado muito especficamenteem tro {econo o emir Fanon le jams rabalhaia com er CComesama sarc conorente que podem atlanta prema O proj comep perder seus lene. ‘Alii pela qual esse proj sobeive¢ que dos desemoledors astm um ano ini repjetando apenas ese arquivo pas qu le saver mente aera les ano posi pra tender tas folctagtes de curorenquanto eto repojtanda masa mor pate do empo¢ gaso em repo « ‘amet re ion ‘A regra sada para evitar projet righdo € ig deve ser rojetao combasene ue voc sabe agra, nono que vot ens que acontecer no fut. Projete apenas com base em seus requisitos imediaos © conbecidos, sem descatar a possbilidade de requstosfururos. Se vo® sabe om cereza que precisa que o sistema faa X, e apenas X,enco projete-0 apenas para fazer X agora mesmo. le alez faa outeas coisas que no Ssejam X no future voc deve ter sso em mente, por enquant, 0 sistema deve apenas fazer. Enquanto estner projetando dessa forma, isso 0 ajudaré a manter pequenas as sas alteragiesindividais Quando voc? apenas tem aie fer uma pequena aera ¢ fc fazer algum verdadero rojet ela, Isso no significa que planejamento € rum, Certa quantidade de plane- jamento€ muito vaiosa em projto de software. Mas mesmo que woot ‘no elaboreplanos dtalhados, estar bem desde que suas alteragBes jam sempre pequena que se cig permanega facimente adaptive para o futuro desconhecida Sendo genéia demais Quando confrontados com ofato de que seu eign madarsno futuro, alguns desenvohedores tentam resolver © problema projtando uma solugio tio genérica que (eles aceditam) acomodard toda possivel sStuago Futura, Chamamos iso de “superengenharis (0 dicionrio define superengenbaria como uma combinagio de “super” (sigpiicando "demas" e"engenharia”significando “projet econstru ‘o")- Entao segundo o dicondria,otermo significa projear ou constuir ‘ermas para sua sia, Espere~ projtar ou const ‘uma coisa boa? ir demas? © que €demals"?Projetar nto Bem, sim, a maioria dos projetos poderia imestr mais tempo da fase de “projets como vimos no “Exemplo: Ciidigo sem projet suficiente™ na gina 58 Mas, de vez em quando, alguém fica realmente envolvido ¢ acaba extrapolando ~ meio que constrindo um laser orbital para ———— strut um foemiguci, Um laser orbital € uma inrivel fauna de fengenhari, mas custa uma enorme quanta de diahera, leva muito {tempo para ser construldo e€ um pesado em termos de manutencia. ‘Voce pode imaginar ter que subir at Ide consertsto quando quebear? Hi seis outs problemas com asuperengenhaia 1. oct nfo pede preverofurura, entio no importa qui genérica sua solugio, la no serdgenércao bastante para satiszer os ‘erdadeiros requisitosfuruos que woo! tri, 2 Quando seu cio € genérico demais, cle frequemtemente nio ‘manipula dealhes muito bem sob o ponto de vista do usuéria Por exemplo,dgamos que oct projet algum eédigo que tata toda entrada do mesmo modo do ndo pasa de bytes As vezes ‘se cig process texto, a8 ves procesa imagens, mas do ‘que dle sabe € que estérecebendo bytes De certa forma, esse & tm bom projeto: océigo € simples, independent, pequeno ec ‘Mas enti voct se certifica de que nenhuma parte de seu cio listngse entre imagens etext Iso €genévico demais. Quando © usudrio intrduz uma imager ruim, oer que ee obtém €: *Voed introduziu byes ruins: Deveria te dito “Voce introdizia ‘uma imagem rum’ mas seu cédigo € to genrico que no pode dizer isso 30 usura. (H4 muitos modos pelos quai ess cio tgenérico pode ser insuiciente quando submetdo a sos espe Fos; esse € apenas um exemple). 4. Ser genrico demais envolveescrever muito cAdigo que no & necesdeo, 0 que nos leva nossa primeira falha Em geral, quando seu projeto toma as cosas mais complexas em vee simplificils, woot est fzendo superengenharia. Aguele laser orbital ‘omplicriaenormemente a vida de uma pessoa que precsasse apenas ‘estrir alguns frmigueios 0 passo que wm simples veneno conta formigassimplificaria grandemente avi dessa pessoa em elimina © problema das formigas(supondo que funciona). Ser genérico com as coisas certas, das maneiras certa, pode sera tase de um projeo de software bem-sucedida. Contuda, ser genéricn ‘demas pode sera causa de complexidade india, confuse esforgo ® ‘scott eee de manurengi. A rgra para evita esa falha €semelhant & ogra pa ‘vita projetosrigidos: Seja apenasto genre quanto vc sabe que reds ser, medatamente, Exemplo: sendo genérico demais Em uma parte de cero programs ousiropreenchew um formulisioe programa enou entenas deemais Esa pare do prams era muito Tena O usuir submets 0 Grmulino © prgrma fcr dure io empo enelando lat menage, Fara tomar iso mas pido dsenvedores deca no evar | todos or emai imediaamene- Em vez dso ls seria coins | eckground depts de ai er tmesi former wand unt | wecho de iio precnstentechamado “Email Seder" (0 daemoldor que comegi 4 tabular news aero deck que | algumaserpeeae ales qisesem us algo ale do Email Sender, le ecreve cenenas deine deeign para perme que os cents “ve conecasen” a Quo: stems para erwabalho em background, ‘enh lene vapid so; desewolvedor implement previa que alguem a querer ene po esto de lexbiade no futuro. Posteroementoaquteo-cfe do programa asumi trabalho dessa ale Ele imino odo odio pra "seconear'a utes sistemas, prgu ao hava evden de que or usriosoqusesem, Asi, no fais evdénca de que o cdg deeria se to generico medatamente ‘Com ees wechos mina «aero we tro muito ai snes ‘Quatro anos se passaram dede que sles 6% orignlmente Kt, ‘nem um unin cee peciou da cpacidade ese cnet outros Sistemas Nio owen edad, xo praetor Desenvolvimento e projeto incrementais Hi um método de desenvolvimento de software que evita a 8 alas por sua exata natureta chamado “deserwolvimento e projeto increment luis Ele enolve projeto€ desenvolvimento de um sistema parte por parte, em order, mais ci expicar com um exemple. Aquiesté como ousarlamos para _desenvolver um programa decalculadora que precisa adicionaysubtrair, smulepicare divi: 1. Plane um sistema que faz apenas digo e nada mais 2 Implemente esse sistema, 3. Organize o projero do sistema para que sea fil adicionar um recurso de subuagia, 4 Implemente o curso de subragSo no sistema. Agora temos um sintema que far apenas adigtoesubtrago e nada mais. 5. Organize o projeto do sistema novamente para que sea fil adi ona um recurso de muliplcagao 6. Ignplemente o recurso de muliplicagio no sistema. Agora temos tm sistema que faz adigiosubtracie, muliplicagdo enada mais 7, Organize o projeto do sistema novamente para que sei fi ad ‘ona o recurso de dvi. (Nessa altura, sso deve exigir pouco ‘ou nenhurn esfora, porque jé melhoramos o projto antes de implementara substagdo ea multplicago) 8. Implements o recurso de dvstono sistema, Agora temos sistema ‘que pretendiamos desevoler com um excelente projet quehe serve bem Esse método de desenvolvimento exige menos tempo € menos pensi- ‘mento do que planer tooo sistema antecipadamente edeservol-lo de uma vez acento ser fei a principio se vot estiver acostumado ' outtos mézodos de desenvolvimento, mas ee se tomar fil com a pri. ‘Apart complicada de usar ete método¢deciie sobre a ordem da im- plementagia. Em ger oct deve slcionat 0 que for mais simples de ‘se trabalharem cada eapa, quando woe chegar i Seecionamos adigio primeiro porque ra. a mais simples das quatro operagoes, subtragdo em Segundo lagi porque ela se fundamentalogcamente na adgao de um ‘modo muito simples Poderiamos posivelmente ter selecionado mul- tiplicagio em segundo lugar, que a muliplicagao€ apenas a ago de fazer adigho muitas vzes. Anica coisa que no teriamos seecionado « senmedretsnee em segundo lugar € a visto, porque passar da ago para a divisto € cistante demais de um pass ligico ~€ compleo demais Por ous lado, pasa da muliplicasio para adivsiono final realmente ea ito simples, eno, ess ea uma boa escolha As vezes wot pode até precisa selecionar um recurso individual € divid-lo em etapas pequenas simples elogicas para que cle possa ser implementada, Isso & na verdade, uma combinacio de dois métodos: um chamado ‘Aesenvolimemto incremental e outro chamado “projetoincremen- tal. Desenvolvimento incremental € um método de criar um sistema fazendo o trabalho em pequenas partes Em nossa lista, cada etapa que ‘comesou com “Implement era parte do processo de desepvolvimenta incremental. Projet incremental ésimilarmente um mézodo decriar€ melhorat o projeto do sistema em pequenos incrementos. Cada etapa ‘que comeqou com "Organize projet do sistema ou o"Plan era parte do proceso de projetoIeemental eserwolviment'e projet incrementaisndo & 0 tnico método vido de desenvolvimento de softwar, mas €um que defiitivamenteprevine astrsfalhas apresentadas na seg anterior Inflizmente, nenhum programador ¢ perfcta, Bons programadores inroduzitdo aproximadamente um ero em vim programa para cada 100 linhas de eddigo que excrevem. Os melhores programadores, sob as melhores crcunstncias,ntoduiedo um erro para cada mil linhas de cidign que exrevem, Em ours palavras, no importa quo bom ou rim vot & como pro aramado€ certo que quanto mais vot cadfiarmaiserosintoduzirs Isso permite delarar uma lei chamada Leda Probabilidae de Eero: ‘chance deinroduirumeroemseuprograma éproprdonal quamdade eaterages ue voc free. Isso € importante porque os errs volam nosso propésito de ajudar as pessous portant dever ser evita Além diss.corigr eros €uma forma de manutengia Assim aumentando ontimero de eros aumenta nosso esforgo de manuengba ‘Com essa lei sem ter de prevero futuro, podemos imediatamente perober que fazer pequenasalteragGes tem a probabilidade de levar a menor esorgo de manatengo do que fazer grandes alteragSes Pequenas aleragBes = menos erros= menos manutengia, Essa lei também és vezes declarada mais informalmente como “Voct ino pode introduzir novos ero se no adicionat ou modifica cdi: ‘©-curioso sobre essa lel éque ela parece estar em confito com 3 Lei da ‘Alteragao~seu software tem que mudar mas lero intoduzie tro, Esse € um confit verdader,e equilbrio desss les € 0 que exige sua incligtncia como projet de software F realmente ese conflio “ (tnt me ‘que explica por que precisamos de projet e, de fat, nos diz qual € © rojeto ideal é 0 metho projet é 0 qu permite amis alteraco no ambiente com a nia alterago no software. E isso simplesmente, resume muito do que & conhecdo sobre bom projet de software hoje Se ndoestver com ero. ‘Ok, entdo voc! ndo pode intoduzir errs em seu programa se voce no adicionar ou modifica o oiiga e esa € uma letimportante do projet ‘mente 0 eros. Mas a alterag € ineitvel,partcularmente se vamos adicionar novos recursos Ente "ndo alee ada’ no pode sera ténica Sefnia de eug de eros. CConforme explicado no capitulo 6 se quer evita eros em seu cig, realmente ajuda manter suas alteragbespeqenas. Masse quer ie além fecliminar errs mesmo de suas pequenas alteragdes,hi otra Ii que pode ajuda ela nto reduz simplesmente os erros~ ela mantém seu ‘igo sueto& manuteng, faciita a inclusio de novos recursos me- Thora a comprensio gral de seu cdign Essa € «Lei da Simplicidade: ‘acide de manutengio de quakue software propecia mpi ‘ade de sus pres indus. Isto & quanto mais simples sto as partes, mais ailment vo poder alterar as coisas no futur. Perfita facilidade de manuengio & impos sive mas €a meta que woot pretende ating —alkerag total ou igo ovo infinio sem nenhuma diiculdade, Talver ena notado que essa lei nao fala da simplicidade de todo 0 sistema, contudo, apenas das pars individuais. Por qué? Bem, um programa de computador de tamanho médio 80 complexo aque nenhuma pessoa poderiacompreendé-lo todo de ma vex F ape as posivel compreender partes dele Entio, walmente sempre temos alguma esrurura grande e complexa para todo a nosso program. O aque entio se toma importante & que as partes podem ser entendias {quando olhamos para elas Quanto mais simples sfo as partes, mais ” emt te provivel que qualquer pessoa as emenderd sso € paricularmente importante quando wo8 est passando seu cégo para outras pessoas, ‘ou quando se afasta de seu ciigo por alguns meses e ento tem que volta ereaprender 0 que Woe! fz ‘Uma analogia com a arquitetura Imezine gue vcd ed coteiaco orm eure de agp de 9 mca de lr Pera faa com iri igs pequenas qu so partes simples ‘Ou podera oars enormes comple partes de ag eunilas ‘Com borage da vga. ero comprar apres indi Ese qelrar vod plement ambi prina pes de epost sdénuca Aconstugo smples asim como a manatee As ars coms ro In, dee inne as hesthedchats emeeenee Coa povetiiativieade he die cso rmrerdon os den Epes, ‘nara xe mina wt dob cos im Pande iidesdinraceomsyeten mt-tcey (ees es eke ek groom rede mre een er eee. | Sofware ents sentane— ua ct exes pe pare | Saenger cri onc tra mane do ma {10 ned ce poe tc pies «compe eda pare gists valk eines oor ORR EETIS. eevee ei eee cote os ‘crnkonan comtintmene ps mina unnsnda Ent por qu as poate veas cree echo grandes omplnos em verde pur poquensesiple? Bem, hs uma economia de emp pecebida com o métdo das partes enormes quando voce ets crams sofrwae pla primera vex. Com is partes pequnas muito sxe {sto unindoas Voto wo com pres enorme egos es els se une de repent ef 90 Conta. qualidade do sistema de partes norms € muito ais bina, «voc passat mui tempo crrigndo- no fara Far cada vez mais {Anal fara mateng, eng o stema simples se torn cae ex mais fil No longo prin €sitpiodade que € econ, lo « complesidde a aren 8 nto como usamosessa elmo mundo rétco da programagao? Esse € ‘oassunioaserteatado no reseante deste liv. Em geral contd, aides {tomaros componentesindividas de sew cig os mats simples pos: sires eento certifarse de que eles permanesam assim como tempo. ‘Um bom modo de faer iso é usar o mérodo do desenvolvimento € rojto increments introduzido no fim do capitulo 5. J& que hé uma tap de “reprojeto" antes que cada novo recurso sejaadicionad, woo? pode usar esse tempo para simplificao sistema. Mesmo que ndo estja ‘usando esse ézoda,contude, oct pode evar algum tempo ente adic ‘ar recursos para simplifiarquaisquer partes que parecem complexas

Você também pode gostar