Você está na página 1de 50
4 Ciéncia do Desenvolvimento de Software As Leis Fundamentais do eto de Software I | O'REILLY" | novatec Max: Kajiaualecanel Prefacio ‘A dferenga entre um mau ¢ um bom programador € 0 entendimenta, Isto mas programadores nfo entendem o que esto fazendo, e bons programadores entendem. Acrediteou nio,é realmente simples assim. Este liv existe para ajudar todos os programadoresachender o desen- ‘olvimentode software em um nivel bem amploque pode ser aplicado a «qualquer linguagem de programacio ou projet daqui at aeternidade. Ele apresenta les centfias para desenvolvimento de oftware de uma forma simples que qualquer pessoa consegue lt Sevoot ¢programador esas eis sudarso a explcar porque cetos mé- todos de desenvolvimento de software funciona porque alguns na, las ajudardo a guit-lo na vomada de decises sobre dexewolvimento crevendo um programa segunda defniio €0 que os usuirios veem {quando eto usando um programa, O programador dir ae computador: “Exihaum porconatela!Essa€a defini algumasinstrugbes O com> putadorespalha muita cletiidade que faz com que um porco pares) ‘na ela Essa 6a definiglo 2,25 ages exccutadas pelocomputador Tanto © programador quanto o usuéro aqui diriam que esto trabalhando ‘com “um programa de computador’ mas suas experiéncias com ele sio muito diferentes Programadorestrabalham com palavras ¢simbolos, ‘enquanto usuarios veem apenas o resultado fnal~a5agbes executadas Em skim andlise, um programa de computador € esas duas coisas as instrugbes que 6 programadorescreve 4 as ages ue 0 computador ‘exccuts,O objetivo de escreer as instrughes€ fazer com que as ages {conejam-— sem as ages haveriarazdo para escreweras instru, Ecxatamente como na vida, quando wo? escreve uma lisa de compas. [Esta €um conjunto de instrugbes sobre o que compratnaloj. Se vou! {apenas escrovesie as insrugdes, mas nunca fosse ata oj, so seria ‘completamente sem senda. As intrugdes precisa fazer com que algo conte Contudo, hi uma diferencasignficaiva entre escrever uma lista de ‘compras de netosaimentcioe eescrever um programa de computa: dor Ses lista de énetosalimenicios for desorganizada, sso apenas retardardligeramente sua expriéncia de compra. Mas, se o cign de sea programa for desorgaizada, tigi suas metas pode tornar-se um pestdelo Porque isso? Bem, lista de mercearia so curtasesimples.¢ ‘oct as jog fra quando acaba de usi-las Programas de computador so grandes ¢complesos,e voc? com frequtncia precisa mant®os por ‘mos oa déadas Entio,embora uma lista de merceaiacurtae simples ssa taser pou diculdade a vot, importa o quanto ela esta {kesonganizada, masse uma de programa for deorganizado,poders causara vooé grandes dificuMades. ‘Adicionalmente, no i ouraeaem que um conjunto de nstruges 0 resultado dessasinsrugSes estejam to ligados quanto na rea de desen- vlvimento de software Em outras reas. as pessoas escrever instrugDes depois as entegam a ouras, requentementeesprando muito tempo pwns » para élasenecutadisPoreemple quando un argu projet ima {Sat cece um cojrno de nr -or rp ean ‘Ses even poe yor ssn pono cece dcorer deo cps fan rae Get eal Arca al OD eo ds ory des ems pacer eres do ere, Feroua laa ands ecrerame Sd nto ningun cae nse Ccompuuroe Oraulslo Coote 9 ee eres deers per uzzson quire Austin do roodo ial rpendcinc tuned quae anim de owas eas deme ign, Dass afore. qualidade do gn mor poems eft nos poco desta hj orcs dene lade dor on ut pont mecinadoya mat pas dele Cobre como corre tral da cdi borders ease males ambenem guns Ings ano glo fco ton melhorarscaruinacaquaidde ds Berra gta edie aca Quando aaron tempo come be cia cond ¢ Pests Bal eco au cents lcs a pore Spmosn thao mele Nada re pedo im reatado rim eda nto ce fons en clr oilign sprees meborar cis Fo potene ais impertaie oc dence ere de cons: rude (© que mais precsamos, ent, & de uma ciénia para melhorara qua Iidade do cidiga. captruto 2 Aciéncia ausente Estelivo Gem sua maior pare sobre alo chamado “projet de software? ‘Talvez vot tenba ouvido esse ermo ante.ealvez tena a€ ldo alguns livtos a respeita Mas vamos olhar para ele de um modo mais atual, apresentand definigbes nova e precisas. Sabemos que & sofsjae. Ent, o que realmente temos que defini € a plava “projets verte 1. Elaborar um plano para uma criagla Exemplo: © engenheiro ‘projtaré uma ponte neste mse aconstruiré no priximo més. ei 1. Um plano que ft elaborado para uma craglo que ainda no foi constrida, Exemplo: (enh surgi com wm poe pa ma ont ele a cna mo prima mis 2. Oplano que wma ciao exitene segue. Exemplo: Aquela ponte i segue um bom projet “Todas esas definigbes se aplicam quando falamos sobre projeto de + Quando estamos ‘projetando software” projetar como um veibo), estamos planejando-o. Hi muitas coisas para planear Sobre software a esrutura do céign quai tecnologias vamos. ‘sar ec Hd muitas decisis tenicas a tomar Frequentemente, 56 tomamos esas decsdesem nossas mentes,mas.s vs também “anotamos nosss planos ou desenlhamos alguns diagrams (psec sts a + Uma vez que fzemos isso resultado ¢ um “projet de software” (Cprojetocomo a peimeiradefnigio do nome), Esse €0 plano que fizemos. Mais uma vez, esse poderia ser urn documenta ett ‘mas ambém poderia ser apenas virias decisis que tomamos que agora estamos mantendo em nossas mentes + Cédligo que jt existe também te “um poet” ("projets como segunda definigio do nome) qe éaestrarura que ele tem ot ‘plano que ele parece seguir Algum digo pode parece ni ter absolutamente nenhuma esrurura clara ~ esse edigo no tem “nenhum projet significando que ndo houve nenium plano efnido feo pelo programador original. Ente “nenum proje- 16" e “um projets também ha muitaspossblidads, as como “ym projeto parcial “wirios rojetosconfianes em um techo «4 igo “um projet quase completo" ee Também pode havcr projets efctivamente ruins quedo piores do que nenhum projet Porexemplo imagine se deparar com algum cdo que tenhasido ‘escrito intencionalmente desorganizado oa compleo~ esse sia ‘um cidgo com um projet eetvament rim, ‘Aciéncia de projet de software & uma ciénia para claborar panos et- ‘mar decsdes sobre software Ela ajuda as pessoas a tomar decades como: *+ Qual deveria ser estratura do cédigo de nosso programa? mais importante focarem ter um programa ripido ou um pro- rama cujo cio seja de fc etura? Para nossas neesidades, qual linguagem de programagio deve amos ws? de software no aborda asuntos como: * Qual deveria sera esrurura da empresa? + Quando deveriamos ter reunides de equipe? + Quais horas do dia os programadoresdeveram trbalhar? + Como deveriamos avalarodesempenho de nosso programadores? 2 ‘ste fndamenas do Pt Sea Essa no so decides sobre seu software, so decisbes sobre vost ou sa onganizalo, Certamente,€ importante tomar esas decisbes de modo ‘ddequado ~ muitos projtos de software falharam porque no tinham lum bom gerencamenta, Mas ese nao ¢ o foc dese ltr. Este lv & sole com roma as decsbes tenia cores sobre seu sofeware ‘value rsa que ene a arutetra de se sistema de software ov as ess tens qu voc toma enquato ciao stem se enqudra na ‘ategoria de "poets de stare: Todo programador é um projetista s “Todo programador que sts tabalhando em wm pojeo de software cet etwolvido em projeta. © descnvoledor lider est encarregado de Drojetar «arguteurg eral do programa inter Os programadores Seniores sto encafregados de proctar suas props grandes dreas E (os prgrampdores juniors esto enarregados de proear suas partes {do programs, mesmo que sam to simples quanto uma parte de um arquivo Hé até cera quantidade de projet enolvde mesmo na escrita dea nica ina de oi Meso quando voce ests programando tudo sozinho, ainda hd um proceso de projet que continua, As veze,vocé roma uma deciso Imediaamente antes de os seus dedes pressionare o tecado, eee todo o proceso, Ouras vez, vod pena sobre como vi estes © programa quando ester na cama nite “Todos aqueles que ecrvem software so projtitas Cada pessoa em uma equpe de software €responsivel por certifcarde que seu cig ‘oti bem projeada, Ninguém que ee exrevendo cig para um projeto desftware pode gnorar projet desoftvarem qualquer nivel Contd iso no significa que 0 projet € uma democraia.Voeé no deve prota em conjuno ~oresultado seré um projet eletvamente ‘im. Em vez disso todos os desenvolwedores devem tera autoridade de tomar boas decsdes de projeto em suas pris eas. Se ele o> ‘marem decsdeseradas on mediots, esas ever str aneladas por tm desenvolvedr senor ou pelo programador dt 0 quai deve er p20 ete » poder de veto sobre os pojetistas a eles subondinados: Mas, de outro ‘modo, a esponsablidade pelo projet do cdign deve permanecet com, as pessoas que esto realmente trabalhando nee. ‘Um projetista deve sempre estar disposio a ouvir sugerties feedback, porque os programadore normalmente so pessoas ineigentes quem boas ideis. Mas aps considerar todos os detahes, qualquer desist dada deve ser tomada por uma pessoa, ndo por um grupo de pesoas ‘Aciéncia de projeto de software © projeto de software, como € praticado no mundo hoje, no & uma cincia.O que é uma cignca? A definigio do dicinrio & um pouco ‘omplexa, mas, basicament, para que um assunto seja uma ciéacia ele fem que passar por certos tests + Umaciéncia dev comer conhecimenta que fi coletad Ito ca tem que ser composta de ftor~ no de opines ~eesesfatos deve ter sido eunids em algum lugar (como em wm lito. + se conhecimento deve ter alqum ipo de onganiacio.Tem queser ivi em categoria a diversas partes devem extarcorretamente relacionadas uma 4s outrasem termos de importincia et. *+ Uma cincia deve contr verdadesgeris ou lis bisicas, ‘+ Uma itcia dev Ihe dizer como fzeralg no univer fsca Ela ever ser de algum modo aplicivel no wabalho ou na vida ‘+ Normalmente, uma cénca ¢ descobertaecomprovada por meio ‘de método centfio, que envole obseragao do univers fis ‘o,claborar uma teoria sobre como o universo funciona, ealizat ‘experimentos para verificat sa teoria e mostrar que o mesmo ‘experiment funciona em todo agar para demonstrat quea eoria uma verdade gral eno apenas uma coinidéncia ou algo que funcionou 56 para woe. Tecra uc esr un dc ir oouto pgm hq art ome coop gus uc ee et Sat me cr cpr tA negzanaapeniem coats on aredcal rl {i proramadeconona to nes i crc oe tate snagupe Come mapa dn pods pecs mare pra cosas pam os saan one tpg a ™ ‘stmt ore dest "Nomundo do softwar, ems muito conbecimento;ele foi coletado-em livros ef um tanto organizada. Contudo, de todas as pares exigidas para se fazer uma cnc estamos setindo fala da parte mals importane te leis claramentedeclaradas~erdadesinabaliveis que nunc aharda, DDesenioiedores de sofeware experientessabem qual ¢ a coisa certa a fazer, mas porque aquela¢ a coisa cert? O que tornaalgumas decisbes certase algumas deisdeserradas? uae si a es fundamentas do projet de software? Est livo ¢ 0 registro de sua descoberta Ele expde um conjunto de ‘definigbes fats, egras les para desenvolvimento de software, em sua ‘maiora facados em projeto de sofware. Qual ¢ a dierenga entre um fara uma regra, uma defnigo e uma le? *+ Defines edizem o que algo &¢ como wooo sara + ats sho apenas declaragBes verdadeiras sobre algo. Qualquer fragmento de informagio verladeira € um fax + Rego declaragies quel do conseho verdadeira abrangem algo especiio e ajcdam a orientardecsdes, mas noo ajudam ‘ecessriamente aprevero que aconteceri no futuro ou a desco- briroutras verdades Els normalmente Ihe dizem se deve ou no ‘omar alguma decisio. + Lasso fatosque serio sempre verdadeiroseabrangem uma ampla ‘tea do conhecimenta Elasajudam a deseobeir ourasverdades impotanes¢permiem ue voc pre 9 te ome no De todas esas as leis so as mais importantes. Neste iva, voc saber ‘que algo & uma lei porque o texto dir isso expliciamente Se oct no tstive certo sobre em qual categoria alguma informasio se enquadra, ‘oapéndlce Blista toda iniormagzo importante no livo ea rulaclara- ‘mente como una le ea, defnigo ou apenas um simples ani faa, ‘Quando voct ler aguas dessas defines es repras ou fatos poder lize a voc’ mesmo “Iso era Sbvia eu sabia disso" Isso € realmente Thastante esperado~se vod esti na tea de desenvolvimento de software 31 muito tempo, possvelmente se deparou com algumas desasideais antes. Contuda, quando tive ess reas, pergunte a voc! mesmo: Anca ete Eusabia que ese dado parsculaeracompronadament verdad? sabia quio importance ele ea? a podera to comunicado laramente a outra pessoa para que la oentendesse completamente? us emendi como ele se relasonava com outros dados na drea de desenvolvimento de software? diversi a algumasdessas perguntas quando anerirmente dito "a" ou “ales entio voo! obteve um tipo espeifico deen oye ese entendimento uma parte enorme do que diferencia de um mero conju de ieias ess cigncia pode no ser perfeta ainda. Hi sempre algo mais a Je qualquer dea. As vezes, hi a serem fitas em lis bisicas quando dados novos sio 0 surgem fatos novos, Mas ese € um ponto de partida sobre o qual se pode consruir:um conjunto real dele verdades js para cir software que pate dest zo se comprovem erradas algum dia € uma melhor sia desenvalvida¢ important que um fatopermaneya [rojeto de software pode ser uma ciéncia. Esse no € um mist zero, sujet a opinito de todo programador que aparece ou todo nor que quer ganar algum dinero vendendo seu "novo mézods” projeto de software ile, las podem ser cnhecidas vod poe cnbec as as si eters, tives undamentlmente edadeiasefunconam, 20 fao de as eis nest vr serem leis corretas ou no..bem, centenas de exemploseexperimenton qe peneriam ser itads para “eomprové-las mas ainal voc ed que decdirpor voc® mesmo Teste as Tei Veja seconsegue pensar em quaisquerverdadesgeris sobre deser- ‘olvimento de software que sejam mais amplas ou mais fundamentais. Ese voc? surgir com qualquer coisa ou encontrar quaisque problemas ‘com a leis veja hpdhrcadesinplisecom para contatar 0 autor com ‘suas coneribuigdes ou perguntas. Quaisquer revelagbes adicionaisa este assuntobenefcariotodo mundo desde qu essa revelaéessjam real- mente verdadeeas, eis fundamentais ou regras do projeto de softwar. * ‘Issam jt dete Por quenéo houve nenhuma ciéncia de projeto de software? “Tahez woo esta imtressado em saber por que ma cici para proto de software nfo existia antes deste liv, Afnal de cont, estamos ‘ecrevendo software hi écadas edécadas. ‘Bem, essa & uma histiriaineressane. Aqui esto alguns acontecimen- tos que podem sjudar oot a entender como chegamos to loge com ‘os computadores sem desenvolver uma cincia de projeto de software. ( que pensamos hoje serem “computador” comeyou nas mentes dos rmatemiicos como dispostvos puramente abstratos — pensamentos sobre como solucionar problemas matemiticos usando maiquinas em ee do zebra : ses matemiticos so as pessoas que considerarfamos os fundadores da cinciadacompuragia,queéoestudo matemitica do pracessament dda informagio, Nao come’ algumas pessoas acreditam, 0 estudo da Programagio de computadores ‘Contud, os primeiissimos computadores foram constridos sob a supervisto desss cienstas da computagio por engeneirs elerni- ‘08 alamente qualficados Eleseram operados por pessoas altamente tweinadas em ambiente rigorosamente controlados. Els foram todos ‘cnstruides sob medida pelas organizagtes que prcisavam deles (a ‘maior parte govemos, ara apontar misses edecfrar egos, havia apenas uma ou duas apis de qualquer dado meodela. Entao surgiu 0 UNIVAC ¢ os primeitos computador comerciis do rmunda. Nesse momento, havia apenas alguns matemiticos tdricos _vangados no munda Quando os computador comegaram se tornar dlsponiveisa todo mundo, claramentenio era posse enviar um mate _mitico junto com um computador Ente embora alums oganizages, tais como o Escrtiro do Censo dos Fstados Unidos (um dos primeios areceber um UNIVAC),quasecertamentetivessem alguns operadores, altamente treinados para seu equipamenta,outras organizasies sem, vida receberam suas miquinasedisseram: “OK, illda Contabilidade, tse € seat Leia © manual ese vee!” i foi Bil, mergubando nesta miquina comple efazendo o posivel para faxé-a funciona (ipa 2A cc wate ” Billtrnou-se assim um dos primeiros"programadores pric” Tale? ele tvesseestudado matemtca na escola, mas quase certamente no tscudarao tipo de teoria avangada necssvia para concebere pojetat 1 maquina em si. Contuda, ele podia ler 0 manual e entendé-lo ¢, por tentative rz, fizera maquina executa 0 que ele queria Clara quaneo mais computadores comers cram despachados, mais Bills¢ menos operadores altamente tena tinhamon Agrande ria dos progeamadores terminow eatamente como Bll Esc havia uma «coisa de que Bil sora, era de presso no taba Ele reccbiapedidos dla adiministragSo para "Faer aquelataela agora” e ouvia: “No nos preocupamos como é feta, apenas a fag” Ele enendew como fazer a ‘coisa funconar de acordo com seu manaly¢ ea realmente funcionod, cemboranuebrasse de dus em dus horas Posteriorment Bill consegui toda uma equipe de programadores para trabalhar com cle. Ele teve que entender como projetar um sistema € divi as areas entre pessoas diferentes Toda a arte da programagio pritca cresceu organicamente, mais como estudantes universities aprendendoa cazinharsozinhos do que como os engeniros da NASA. construindoo Gnibus expec Enc nese estigia hd um sistema conus de desenvolvimento de sot: ware e€rudo muito complew e dtl de gerencit, mas todo mundo se vira de algum modo. Enc suri The Myhal Man Month Mio Homem-Més (Addison-Wesley), um lve de Fred Brooks, que realmente colhou para o processo de desenvolvimento de software em um proj real eapontou alguns ftos sobre ele 0 mais famoso, segundo o qual incluir programadores em um projeto de software atasado atrasa-0 ainda mais Elenoapareceu com uma cincia completa, masrealmente fez algumas boas observagSes sobre programacioe grenciamento de deservolsimento de software DDepois disso veo uma variedade de mérodos de desenvolvimento de software: 0 Processo Racional Unificada Modelo de Maturkade de CCapacidade, Desenvoliment Ag de Software emuits outes Nenhum esses evindicou ser uma cincia~ eram apenas modos de peenciar a ‘complexidade do desenvolvimento de software. » sesame do oj dete fsso basicamente, nos traz até onde estamos hoje: muitos métodos, ‘mas nenhuma ciénca verdadeira. De ata hi das cgncasausents:acidnca de gerenciamento de sofware acacia de pojeo de software ‘Aciéncia de gerenciamento de software nos dia como diviic trabalho ‘ene programadores, como agendatlangamentos,como estat a quanti- dace de tempo que um trabalho leva assim por diane. Ela est sendo ttabalhada ativamentee€ratada pelos diversas métodos mencionados. 0 fat de opinides conlantes ¢igualmente vidas exisirem dentto da dea indica que as leis fundamentais do gerenciamento de software ainda nfo foram elaboradas. Contude, hé pelo menos atcagio sendo ada ao problema, ‘Aciéncia de projet de software, por outro lado reebe pouca angio ‘no mundo pritio da programasda. Poucas pesoas slo ensinadas na escola que podera haver uma cgncia no projet de software. Em vez iss, no ger elas ouvem:“Easim que esa linguagem de programagio funciona agota vi escrever algum software!” Este liso existe para preencher esa lacuna, ‘Acitncia apresentada aqui nfo €cincia da computagia Iso € etudo ‘matemiicn Em vez dissa ete iro contém os primendios de uma ceca rao programador priico"—um conjungo de kis eregrasfundamen- ‘ais seguir quandoda esrita dum programa em qualquer linguager. Essa €uma cgnca que ¢ io conve quanto Fisica ou Quimica a Ihe lize como crac uma aplicagio. Disseram que tal ciéncia ndo & pose que © projet de software & varvel demas para ser definido por les simples eFundamentas;€ {que tudo € apenas uma questi de oping Algumas pessoas também iseram ceta vez que entender o univers iso eraimpossvel porque “Ea criagio de Deus, ¢ Deus ¢ incognoscve contd, descobrimos déncias para o univers fsica Ent, a menos que voce acredite que ‘os computadoressejam incognoscvis rar uma ctncia de projet de software deve sr ineiramente pose yh sete » também um mito comum de que progeamacio¢inteiramente uma forma de arte totalmente sujitaadesejos pessoas de um programador individual, Contado,emboraseja verdade que hi uma boa parte de are cenvolvida na apliagio de qualquer cignca, ainda tem que haver uma ‘én para aplicr,eatualmente no hénenhuma, ‘Aone priméria de complexidade em software & de fata a fala dessa cléncia Seosprogramadores realmente tessem uma cifncia para simpli cidade em software no averia tanta complexdade endo precsariamos de processos malucos para gerencar esa complexidade capiruo 3 As forcas motoras do projeto de software ‘Quando escevemos software, devemos ter alguma ideia do por que «estamos fizendo iso e qua 0 objetivo final 1H algum modo pelo qual poderiamosresumiro propio de todo software? Se tal declaragiofose posse, cla daria orientagto a toda a nossa ciéncia de pojeto de software, porguesaberiamoso que estiva mor buscando, ‘Bem, hi, de faa, sim «nico propésito para todo software: Aja as pessoas? Podemos diviir isso em um propésito mais espectfico para partes indviduas de softwares. Por exempla, um processador de texto existe para ajuda as pessoasaesrever cosas, um navegador web exit para ajudar as pessoas a navegar na Weh Alguns softwares exstem apenas pars ajudar grupos especificos dep sous Porexemplh muito softwares contabeis que existem parsajudar (0s contadores sss visa apenas aquee grupo especfico de pessoas. os softwares que ajudam animais ou plantas? Bem, seu propisito & realmente ajudat as pessoas a ajudar anima ou plantas. (importante aqui € que o software nunca est Id paraajudarobjeos ‘nanimados.O software ndo existe para ajudaro computador, cle em: re existe para ajudaras pessoas. Mesmo quando voc ests escrevendo ‘Tie opto de odo sa isimporant do que uma Noh ‘pio roe ene amc stop fu fora dpc nap nf dae a ipsa tras mea dope deste ” bribiorccas woot etd excrevendo para sjudarosprogramadores, questo pessoas. Voc? nunca ext excrevendo para ajar o computador ‘Agora, que significa “ajudar”? De algumas maneiras iso € subjetivo =o que ajuda uma pessoa pode nio ajudar outa, Masa palavra tem ‘uma defniclo de dcionérigentio nao depende completamente de cada pessoa o que apaavea significa, O Websters New World Dictionary of the American Language define “ajudar” como: “owmar mals ll pura (na pesou) fae algo, aula; assis Es pecfiament fazer parte do abalho de; fcltar ou comparlhar ‘tablho de. 1H muitas cosas nas quas woot poderia ajudar-—onganizarum horério, ‘escrever um ivr, planejar uma diet, qualquer ois. No que voc ajuda epende de voce, mas 0 propésito € sempre ajudar. {© propésio do software no €yanhar dinbeir” ou “exibir como sou Jnelignt’ Qualquer pessoa que ecreva um software endo esses como seus inicos propésitos esta volando o propdsito do software e€ muito Drovivel ue tera problemas. Tudo ber, esessio meios de "ajudar” a ‘oct mesma, mas ese é um escope muito limitado de ajuda, proetar ‘com apenas esses propésitas em mente pronavelmente lear tm so: ‘ware de qualidade inferior do que geninamenteprojetar ara ajudar as pessoas a fazer o que precisa ou quetem fazer? Pessoas que ndo conseguem conceber ajar outra pessoa excreverBo software rum — isto 60 software dela no ajudard muito as pessoas De {ats poderia ser teorizado (como uma suposigtebascadanaobservagd0 de muits programadores no decorer do tempo) que a sua capacidade [otercial de escrever bom softwar €imitada apenas por sua capacidade de conecberajudat 0 out. Em gral, quando estamos tomandodecisdes sobre software, nosso pi ‘ipioorientador pode ser como poderosajudar. (Elembe'se, hi graus Reels Cscenct toate cacnpetr casas Peet pepsi me ese galas ta ede dn oe ‘Sctue Belmore primo gue deermim soc dcumn cng (irae in poietic ese eames ‘Sinn pecan gases sos pom 2 tesa Pt eSoft ‘varades de ajuda ~ pode-s ajudar muito ou um powco,muitas pessoas ‘ouapems algumas) oe! pode at pririzarsoiciagbes de recrsos dese jete. Qual recurso ajdaré mais a pessoas? Este recurso deve reccber 8 mais alta priordade. Hi mais a saber sobre prorizar recursos, mas "Quanto iso ajuda nossos usudrios?” é uma pergunta boa e bisica a ser feta sobre qualquer alteragio proposta em seu sistema de software, Geralmente este propésto~ sjudar pessoas ~ 0 mais importante que se deve ter em mente quando se projet sofeware,edefni-l nos permite ‘agora crar e entender uma verdadeiracgncia do projet de software. | ‘Aplicagao no mundo real Como podemos as propio do soar 4 news ton m0 ‘mundo ea Bem, digas qe eto xeendo um eit de wae is programaderes A prime cos que prcitos be € detent 1 prop de nono tears melhor man simple dames _| {eco propio ajuda poraadores seit tx Eom se as ‘Spend qu nae east mas So grupo no cin soe {im propio pectin ge plo menor ven com tr simp as, ‘Agora ae temos wm props, vamos oar para todas ax noses solitages de cus Pars cad una pots be pert: “Come ‘se eco sudan or prgramadors eda tex?" Ses eapostabr Nio ajuari poder imedatamente er ene rect de nos tina End, para cada um do ours remanent pode aot repost como ua ase curt Poe exp sna gus age on ect prt doar stalos de ela para age comune Pra | baer “To ju os progamadors eta texo porque permite que fs merajam com programa ms apidamere sm at ua ongs | sa prs digo (Na verdad oct doe que aot cas coe | ls pc pi ar acho-eprm lun tei a ‘ope ps ot mesmo such). | Tambo iris ura ies ipa ie es gt: + Ajuda rsher incense a desrign doo ou come de deserimlenerada Poreemplaarepsaanerorsebee wath | Ae tecado most quea implementa dee eid, porque ese ovo que os ros extaem dla strasmaasde ree desta 3 ‘Aindasequipe a cepa un acordo sore o valor de un esa ‘Algumas pesos podem no gostar da ei de sao de edad mas tado mundo deve poder concordat que a epost anterce ‘exlca por qu els sto valoon Def alguns deserved Feel ster uma dea methor de como state neces ‘se usu Geran com ode eto mas epidamet) sem atathos de ead so & om! Se a espe eva a ua ea melhor deca devenos implementa eve dag. A sspestancndizo que remem neces io sie uo susro pemouquede queria + Responder ergata rar So que alguns euros so mais Important do que utr Isso aja os ieres de pojtos 4 prorzaro aba + Sapordashiptess se noua ened texto ner stor grande ‘cm recuros dma no decor do temp a espa ped 0s ‘sar a decide quai ecu deve se cline oderlamostmbim fxr ua ists de eros i podria exaninae efier a pergunta cone: "Como exe ero strapab aio de texto pelos propamadores As wars spt € dvi, ent la elente Io precisa se anoada Po exemple o programa aha quando oct tea salvar wm argo vot nip prc expr por quo ruin. Provavelmene hi inimers outos modes de apcar o propio do Software no trabalho dro sesso pena guts exemplos raque conhecemos o propésito do software podemos darum poxco dliecionamento nossa céncia do projeto de software. partir do propésio sabemos que, quando escrevemos software, eta os tentando ajudara pessoas Ente, um dos objetivo de uma cncia ‘de projeto de software deve sr: Permit que eseamas sftrare que ej o mak itl pose u tes fndanenas Pt eSofre Em segundo lugar, normalmente queremos que as pessoas continuem ‘endo ajudadas por nosso software Entio, nosso segundo objetivo &: Perit que nas software continue 2ser0 mast pose Agora, esse € um dtm objetivo mas qualquer sistema de software, de ‘qualquer tamanho,€ extremamente complexo, ent, permitr que ele ‘continue a ser dt no decorrer do tempo € uma tae e tanta De fo, 2 principal barreira hoje para escrever e manter um software dil € ‘erdadeia difcldade de projeto eprogramacia, Quando o softwate & lfc de ser riado ou alterada, os pogramadores passam amaior parte ‘do tempo focados em faer as cosas "simplesmentefuncionar“e menos tempo focados em ajudar o usuiria Mas, quando um sistema fil de ‘se rabalhat os programadores podem passr mais tempo focadosem se tei ao usudrio e menos tempo focados nos dtalhes de programacio. De modo semelhanee, quanto mais fil € fazer a mantengio de tm sofware mais cil €para os programadoresassegurarem que osoftware continue ase it Isso nos leva ao nosso terciro objet: Projetar sistemas ue possam se cades submetiesd mantenoo mas faclent posi! por seus pogramadores, aa que eles posam ser ~€ contouer see alte pose. Ese rerceiro objetivo €aquele radicionalmente considerado 0 objvo do projet de software, mesmo que sso nunca sejadeclaradoexplicica- ‘mente: Contud,¢ muito important também reo primeitoe segundo ‘objeivos para nos guia Queremoslembrar que ser i agora eno futuro ‘io as morivagbes para ese terceiro objetivo, ‘Uma cosa que ¢ importante assnalar sobre esse terceiro objetivo € frase “o mais facilmente possivel” A ideia€ wrmar nossos programas fics de criar ede submeter& manutensio, no tiles dfceis ou ‘complexos Iso nto signifea que tudo ser imeditamenteficil~ is exes leva tempo aprenger uma nova tecnologia ou projeta algo bem -, as, no Tonge prazn sas escolhas devem tomar riage e manutengio de seu software mais fies. Con etepinendamntontn {As vezs,o primeiro objetivo (ser stil € 0 terciro objetivo (faciidade {de manutensao)estio um pouco em conflto—tonar seu software ii pode toto mats dificil de submeter & manutengia Contud, esses ois objeivostém estado hstoricamente muito mais em conflto do {que necestariam estar & absolutamente possivelcriar um sistema totalmente sujeito A manutenglo que sejaextremamente ii a seus lusudrios.E, de fata, se voce ndo o tomar sujeito& manutenglo vai ser boastane dificil saisfzero segundo objetivo de continua a ser it Eno, o erceto objetivo ¢ importante porque os dois primeiros no podem ser alcangados de outro modo capiruto 4 O futuro {A penguna primordial enfrentada pelos projets de software €: "Como, tomo decisdes sobre mes software Quando defrontado com muias diregbes posiveis nas quais voot podera ir, qual opsia € a melhor? "Nunea € uma questi de qual dcisto sera absolutamenteceta vers ‘qual decisto seria absolstamente errada. Em vez diss, que queremos saber €:"Dadas muitas decsdes posiveis quais dessas so melhores que foutras?? E uma quests de estabelecerprioridades entre as decisies€ entio excolher melhor dentre'todas as possibildades Por expla, im projetista pode se perguntar:“H 100 recursos diferentes nos qvais poderiamos trabalha hoe, mas temos apenas mio de obra para taba Tharem dois Em quais devemos rabalhar primeira?” ‘Aequagio do projeto de software A perguntaanterit ede fio toda pengunta dessa natureza em projet de soltware,€respondida por eta equago: onde: represent desjaldade por wma alteragda.O quanto queremos fare algo? 1 representa vlorde wma alteraga Quito vaiosa essa aera? NNormalmente, voc’ determinara isso perguntando: “Quanto isso ajuda nossos wusrios embora haja outros métodos para deterinar valor também Capile © Ofaare a — a 1 epresentao ergo emvolvido na realizaao da alterag. Quanto wabalho a alteragio exigi? asencialmente essa equacio diz: A desepblidade por qualquer tera éetamene proprcona valor, aalteaoeinvesament roporonal ao esfroenvalvid em ela itera. Fla nao disse uma alteragto€ absoltamene cert ou errada; em vez soca he dz para estabelecerprioricades entre suas opgbes Altera- {ges que taro muito valor e exigem pouco efrgosio "melhores" do que aquelas que rao pouco valor eexigem muito efor, ‘Mesmo que sua pergunta sea: “Devemos permanecer os mesmos eno Imudar?essa equal di a resposta. Pergunte-e: "Qual € valor de [permander 0 mesmo?” €“Qual ¢ 0 exforgoenvolvido em permanecet ‘o mesmo?” e compare isso a0 valor de mudar e ao esfogo emwolvido na eras, Valor (© que queremos dizercom “valor” na equacdo?Adefnigio mais simples de valor sera CO gravem que cus era sua qualquer peson em qualquer gar ‘As pessoas mais importants a sjudar slo seus usuétios. Condo, desenvolier recursos (features) que oajudardo a se sustentar finance ramente também & uma forma de valor ~€valioso para voot. De fata, Thi muitos modos pelos quai uma alteragio pode ter valor; esses sio apenas dois exemplos. AAs vezes determina o valor numérico real e preciso de qualquer ate- rag particular € dif. Pr exemple digamos que seu software ajuda ‘as pessoas a perder peso Como vet determina o valor exato de ajuda flguém perder peso? Voce nio pode, realmente. Mas vce pode siber ‘com precisto que alguns recursos do software ajudarao as pessoas a perder bastante peso e alguns recursos no ajudarioabsolutamente 35 psoas a perder. Entio, voc! ainda pode estabeece prioridades ent as alterages pelo seu valor —- » le untanena oPro dete Entendero valor de cada posivealteragio vem sobretudo da experiencia ‘como deseavolvedore de fazer pesquisa adequada com usuéris para Aescobrir © que mais os ajudard Probabldade oval eval poten Valor é realmente composto de dois fatores: a probabilidade do valor (quio provivel & que essa alteragdo ajudaré um ususrio),¢ 0 valor potencial (quanto essa alteraco ajudard um usuario durame aqueles ‘momentos em que ela realmente ajuda essa pessoa). Por exemple + Um curso que poderia salara vida de algém, mesmo que baja apenas uma chance em um milhdo de ele ser necessri ainda € tum recurso altamente valiosa, Ele tem uum ako valor potencial (Galvar uma vida) embora tena baixaprobabilidade de valor (Como outro exnpla.em um programa de planitha eletrnica voce poderiaadicionar um recutso que ajudass pessoas cgasa digiar ‘mers no sistema, Apenas uma pequena porentagem das pesso- 35 € cega, mas sem esse recut elas no poderiam absolutamente ‘war seu Software. Novament, esse recurso €valioso porque tem ‘um valor potencial muito alta apesar de afetar apenas um pequeno rape de usuarios (uma bana probabilidade de alo. + Se hi um recurso que fri 100% de seus usuétios sori, ese ‘amb & um recurs valiosa Ele tem um valor potecial muito pequeno (ze as pessoas Sori), mas feta um miimero muito sande de usuios eno cle tem uma ata probabildade de valor. + Por out lado se voc implementar um recurso que tem apenas uma chanee em um milhto defazeralguém sori. ssondo é mu to valioua. Ease € um recurso com baixo valor potencil e baixa probabilidade de valor. nto, quando cosderao valor, voc também tem que considera: + Para quantos usutos (qual porcentagem) essa mudanca sera valosa? a » + Qual a probabilidade de que esse recurso sea valioso para um ‘sudo? Ou, colocado de outa forma: com que frequénca esse recurso ser valioso? + Quando €valosa,qutovalios sera? Fault de dans [AlgumasaleragGes podem casr alm danoalém da ajuda que razem. or exemplo alguns usurios podem car aborrecids se seu sofeware ‘mostrar hes antncios, mesmo que esses aniciosajudem a sustentar ‘ox? como dexewolvedor CCaleularo valor de uma alteragio incu considerar quanto dano ela pode causareequilibrar isso com a ajuda que ela tar. valor deter suiros Recursos (features) que no tem usuérios no ém valor media Iso pode inciir recursos que os usuros no conseguem encontrar recursos ‘que so dfices demais de ws on recursos que simplesmente no aj | aa) aa re) ‘s00) | | siso1| stam] [A solugo ideal ~e0 nico modo de garantr sucesso 6 projetar seus sistemas deal forma que o exforgo de manutengl dina com otempa, «-eventualmente se tome zero (ou mas péximo disso possvel Desde {que voc poss fazer aso nfo importa quo grande ou pequeoo valor faruro se toma; vot mo tem que se preocupar com ssa Por exemplo ‘sss tabelas mostra situacBes desis: a ) 2 | $0) su a) irr sa] sto 5 9) sox] ‘wat_| fare) si a) re a) a) 3 ‘| s0) : ‘| _ sw) ‘a | sl) ‘Alteragdes com um valor futuro mais ako ainda sio mais dscns, mas, que ta decisto tem um custo de manutengio ques proxima de zero com o tempo, oot nio pode se colocar em uma stuagio Futura Petigosa, — — i 00 “Teoricament, jf que o valor futuro & sempre maior do que o eorgo de manutencio, a alteraco ainda édesejdvel. Eno, oct podera fazer algumaalteracto em que tanto esforgo de manurengo quanto o valor furuo aumentase desde que o valor Futuro continuasesendosufcen- temert rande ara superar o eon de mateo ee | as) Tal sergio ni rim, as € mss devel fazer uma beri cjo efor de minutengio diminaa, mesmo que ela tena um ergo de Jmplementagdo maior Se oesforgo de manutenco diminui,aaleragio realmente se torna cada vez mais desjivel com 0 tempa Iso a torna ‘uma escolha melhor do que outaspossbilidads. (Com frequénca,projetar um sistema qu ter esorgo de manutengio crescent exige um esforgo de implementacio signifcaivamemte Inaior~exige-e muito mais wabalho e planejamento de projeta.Con- ‘tudo lembrese de que oesforgo de implementaco équase sempre um fstorinsgnifiamte a0 tomar decisis de projet e deve geralmente ser ignorado Em suma ‘mals importantereduaresfrgde manutengi do que red oesojo eimplenentagie. ssa € uma da coisas mais importantes que hé para saber sobre projeto de software Mas, que causa oesfongo de manutensto? Como projtamos sistas ajo eslorgo de manutengto dimini com o tempo? Esse € 0 assunto de grande parte do restante deste live Mas, antes de chegarmos mss, temas que examinar fururo mais um pouguinba « tes dents oP Sore ‘Aqualidade do projeto muito fic escrever software que ajuda uma pessoa, imediaamene E ‘muito mais dif escreversoftware que ajuda milhdesde pessoas agora ‘eque coninuea far isso durante décadas no furura Masonde val tar «amaioria doesoryo de progsamagio quando a maiora dese usurios ‘staré usando o sfrware? Agora mesmo ou naquelas décadas por vir? ‘Aresposta € que aver muito wabalho de programagio ase feito ~ ‘muito mai usuarios a ajudat~ mais no furo do que no presente. Seu software teri que competireexisirnofururoeoesforgo de manutengio coniimero de wsurioscresceria, {Quando ignoramos 0 fato de que hé um futuro ¢fazembs as coisas que “apenas funciona” no presente, nosso software fa dificil dese submeter manutengio no furura Quando o software € df de se submerer manutengda ¢ dif fa@-lo continuar a ajudar as pessoas {uma de nossas metas em projet de software). Se nlo puder adiionar ovs recutss ilo pudercorrigir problemas, oc! acabari tendo um "software rum Ee parade ajudar os seus usuiose fica cheio de eros, Isso nos leva & seguinteregra O nivel de qualidade de seu projet dev ser proporionalextensho do tempo fuuro em que seu sistema comtnuar a ajuda as pessoas. Se voc estiver esrevendo software que srs usado apenas nas priximas horas no precisa coloca muito esforgp no pojeta Mas sescu software ude ser usado nos priimos der anos esto acantece com muito mais Frequéncia do que oct poderia esperar mesmo que woe pense que sa ser usado pels priximos ei mese), entio voc tem gu impor muito teabalho no projeta. Quando em divida, projete seu software como cle fosse ser usado durante muite, muito tempo: ndo se feche em nenhum método de fazer as coisas, mantenha-e fexivel, no tome nenhuma decsio que nfo posa nunca mudar edé muita atengto ao projet. ants ° Consequéndas imprevsveis nto quando projetamos oftware fare deve se nos fc ring pal. Condy uma das coin mais importants a saber sre qulquet ‘po de engenaria ea tlgus oss sore faq et ste, De fata quando se tata de projeto de software oot simplesmente no pode sabera mairia das coisas sobre o futuro erromaiscomume dessroso que os programadoresometem éprevelgo bre ofatre quando na verdad, eles no podem saber. Por exempla imagine que um programador tenha escrito um software «em 1985 que corigadisquetes com problemas. Ele nfo poeria corr air nada mais ~ coda parte dele era totalmente dependente de como 08 dlisquetes funcionavam exatamente Esse software agora seria obsolet, Porque as pessoas no usam mais dsquetes Aquceprogramador previ ‘que “as pessoas sempre usar disquetes’~ algo ue ele realmente no poderia saber, “Talversejapossivelprevero futuro de curto prazo, mas o futuro de lon 0 pram € grandemente desconhecida. © longo peazo também & mais importante para ns do que o curtopraza, porque nossasdecsdes de projeto tro mais consequénclas naquele eriodo mais longa. Sg Vert curt mas segusentowntarabslsament prover ofio| ‘jem vex das tomar adi x dacs de projet com bse em 5 inlormagses cones do preseae ‘Agora isso pode soar como o exato opesto do que vimos dizendo até agora neste capitulo mas nio € O futuro & coisa mais importante a ‘considera ao tomar decisbes de projet. Mas hé uma diferenga ente rojetar de modo a permits akeragloFurura eentar reve fra. ‘Como analog digamos que oo em uma escola entre comer mort 4e ome. Vocé nto precisa prever 0 futur afm de fazer esta excolha ‘oe? sabe que comer éa melhor ecolha, Por qua? Porque ela o manters vivo, © estar vivo conebui para um faturo melhor do que extar morta ( fucuro ¢ importante, e queremos consieré-lo em nossa decstes ” anime dha st Escolhemos comer agora porque contribu para umn fururo melhor Mas © futuro no tem que ser prevsto~ nao emos que dizer algo especfco como: “Estou comendo agora porque amanha tere que salvar a vida ‘de um bebé" Nao importa 0 que acontea amanha, rd um amank ‘melhor se vocé comer agora em vez de morrer de foe ‘De modo semethante, no pojew de software podemos tomar certas Ese € muito mais ic de er jad a peer como o programe precadia que o programa fs pojada Ts wares so defines ent cone ua end tm er ex Ea ctr do rogram, torada cara a ltr plo et como o pogramade uso pan ‘Tomar cig fc de eta ajuda tor ci decorsigc No cxmplo ater, quando o cdo aequndament espa, penn ‘er acmente que» nunc er maior do que y #% pone v€sempre Igunlay + Asim oblocoiicadocom f2> y +) deve se clinnaa tua vee que é deste Em gral se voot em algun cg corm muitos ers que também sea Af de sapien coisa que vost dee fer € ono mae ‘Asin vet poder wer com mai facldade onde sero eta — «| Nomeando sas ‘Uma parte importante da legibilidade é dar nomes adequadosa vases, Fungi clases ete: Kdealment: "Nomes devem ser longs bastante para omuniarplenamente 0 que algo 0 fazsem sere tio longos que trem efile le. Também € importante pensar em como a fun, varlével et: va ser vwada. Uma vez que comesamos coloca seu nome em lnkas de ei seycl tomar sss linhas de edigo to longs que so dificeis de ler? or exemplo, se voct tem uma funglo que €chatnada apenas uma vez, em uma lina sozinha (sem nenhum cédigo nessa inka, ela pode ter ‘am nome razoavelmente longo Contuda, uma fungdo que voce va sa ‘om frequéncia em expressdes complexas deve provement ttm omelqueseja cuto (embora ainda logo o bastante para comunicar plenamente o que el a2. Exemplo: Nomes, ‘Aq et um digo com noms inadquados ast fs 9 0 sus nomes no comunicam o que a are sh ovo que as Funes toe ‘Aa eto mes cio com noms adequados artery ota = sanjay, ferry, ma Prien ta) Eaquiestiomesmo cig com nomes to lang que so dfs deer rte otal. fr coy 20. of tty = 543 fete eta the ety ta mot, | ferry ttl net, sacha) set rene rt a forse erste tot fr. ‘niin so tat sss oes uum mit espagao que toma dif Asin de cera frma, nomen coisas tab tn ver com como las exon ‘xupam espace {que um cecho de cigo etd fazenda, nso dever ser Sbvio a parti, Tetura do eign Se isso no € dbvi,o ego dev ser tornado simples Apenas se Woo! nto puder tornaro céiigo mais simples, terum comentério explicindo o que cl fa. (© verladeir propisito dos comentirios¢explicar por que vot fer ‘quando razio nao & via. Se vot no explicar iss, outros progr ‘dors poderio car confasos e, quando eles forem aera seu poder eliminar partes importantes dele seesss partes pa teruma raz para exist : Aguas psoas aca que a lepbhade€o ator seni Simple do cg set igo for fl ee oc er toque piri fer como um jtiano mo & verde vot pode tt dg mit gil e ainda erumsisema compen dea Contd tomar sci legele mito important «roman onc peso gut Beta dado ma sre freon bra pres de sal ‘Simplicidade exige projet Ineliamente as pessoas no cram nauralment sistemas simples Sem aengdo dada a0 projet um sistema evoluird para alguma coisa bern complica, Seseu projeto no um bom projet,e ele continua a crescer, voc aca bard tendo complexidade em demasi. Isso ¢ dificil de imaginar para certas pessoas ~algumas no conseguem imaginar que hum futuro lem do almoga «outs simplesmente ndo tem expertncia suicieme para entender quo complexas a coisas podem fcarE pode haver uma cultura corporatva que diz:"Oh, apenas inluimosiegalmente alguns recursos novos; deveriamos fazer as coisas da manera czra, mas 830 podemos porque blibli-bli: Mas, um dia, seu projeo fracasard E ‘no importa quantas razdes voc poss dar pata ese facasso 80 090 :mudardo ato de que seu projet facassou, ere » [No outro lado das coisas, quando vootprojetou bem, com frequéncia ‘aio hi muito crédito vindo ao seu enconta Fracassoscatastficos em rojeto so grandes e perceptive, o pass que pequenosinctementos Ae trabalho visandoa um bom projet no so visives peas pesos que Ilo esto intimamenteligadas ao cédiga Iso pode fazer com que ser Jum projtsa sea um trabalho dificil. Adminstar um grande fracasso The iraz muito reconhecimento, mas impedir que um jamais acontes. bem, € provivel que ninguém perce, TEnco, vamos parabenizé-o aqui. oct pensou um pouco em projeto? (Gximo! Seususurios ¢colegas desewolvedores verio os benefcis — software funcional langamentos de vesdes pontuais eum cig base «aro ecompreensivel. oc® se sentir confianteem seu perio rabalho fini para casa sentino-se realizada Seri que os outros desenvolvedores, Sabeto quanto trabalho fo necessrio para fazer as coisas funconarem to bem? Talvez nia. Mas tudo bem. Ha outrasrecompensas no mundo alm dos parabéns de seus pares As vezes,contuda, oct receberdalgum reconecimento por todo o seu trabalho. Nao se desespere~alguém acabars notanda Eat enti, des- frute de todos os ouxos resultados positives do projetocicazecorret (Quando vot comes sapiars prin de projet dime pseu proj pdet lear tito tempo para ses pogaa 5g dors jumires ou clegasenendam po qe eles tambem deem "2 ]__projear tem Fae com que eles lam ct vo sudan Sees c [8 qq. mepucetem ot nto quem ia condnucorcmando-e (ou LS} forandnon na pordas hips par bows ecb depos ‘lever pts guns nos (do lado de faa como fons tes ‘proj compensa. —. cariuto 8 Complexidade ‘Quando vod trabalha como um programador proissona hi chances de ‘que conheceréalguém (ou de que voo® sj alguém!) que ests passando por ess histria de horror do desenvolvimento comm: “Comegatnos a trabalhar neste projeto cinco anos arise tecnologia que estvamnos usando/fazendo era modera na paca, mas esti obsoleta ago As col sasestofcando cada vezmais eomplexas com esa tecnologia obsoleta, enti toma-se cada ver menos provivel que algum dia terminaremos rot Mass sreermospoderiamos sar apr malscin (Ourra popular é "Nao podemos desenvolver rip o suiciente para ‘acompanar as necesidades do usuério moderna Ou; “Enquanto es: ‘amos desemvolvendo,a Empresa X escreveu um produto melhor que @ nosso muito mais rapido do que née: Sabemos agora que a fonte desses problemas & a complexidade. Voc ‘nica com um projet simples que pode ser conclu em um més Eno ‘voc aicionacomplexidae, ea tarfa evar tes meses Entio voc pag ‘ada parte dele a torma mais complena ea tarea levars nove meses CComplexidade fundamenta-s em complexidade ~ no € apenas uma cosa linear sto vot no pode fazer sposigbes como: “Temos de re- «rss enti adiconar mais um adiionaré apenas 10% mais de tempo" De ato esse novo recurso ter que ser coordenado com todos os dez dos seus recursos exists. Eno, se leva dez horas de tempo de couifca- ‘so para implementa 0 recurso em si, pode periamente leva mais, ez horas de tempo de codifcago para fazer com que os des recursos «existentesinterajam todos adequademente com o novo recursa Quanto, a 6 ‘mais recursos hy de adicionar um recuse Vock pode ‘minimizar esse problema tendo um excelent projet de software, mas sempre haveri um pequeno custo exza para todo now recurso. ‘Alguns projets comegam com um conjunto de requsitos 0 compleso «que elesmuncachegam sua primeira versa Se vst es ness stag deve apenas recocar os recursos Nao aposte alto no seu primeiro lang mento lance algo que funconee ago furcionar melhor com temp i outros modos de adiionarcomplexidade do que apenas adicionar recursos, também, Os outros modos mais comune s80 Expand o propio do software [No geal simplesmente munca faga isa Seu departamento de ma- theping tex esivsse com a dela de fazer um Unico software que caleule seusimpostscazinheojntar.mas vo deve estar ritindo ‘mais alto que pode sempre que qualquer sugestio coma esa chega perto da sua mesa. Atenha-se 20 propésitoexistente de seu software cle apenas em de fazer o que faz bem, e voce sera bem-sucedido (desde que seusoftware jude as pessoas com alge que las realmente precisem e queiram). ‘Acrecentarprogamadres Sim, est cert—acrescentar mais pessoas equip nfotomaas ois rai simples; em ver dio adiciona complexidade. Ha um famoxo lio chamado"O Mico Homem-Més? de Fred Brooks, que evidenca isso Se vot em dez programadores,acrescentar um décimo primero ‘significa gastar tempo para entosa esse programador, mae oto pra enttosa os dex programadores com a nova pessoa, mais ote po gasto pela nova pessoa ineragindo com os dex peogramadores, assim por diate. Voc tem mais probabilidade de serber»-sucedido ‘com um pequeno grupo de programadores especaizados do que ‘com um grande grupo de programadoresnlo especalizades. Alera cis ue nS prec er aradas Agqualquer momento que voetaltea algo, voct est adicionando complexdade Se um requis, um projetoouapenas.um techo de ign voc est intduzindo a posiilidade de errs, bem como tempo exigido para decidir sobre a alerago, 0 tempo exgido para % ‘seshndmertat det eet implementa a aterasS, 0 tempo exigido para valida o funclonae mento da nova alteragio com todas as ours partes do softwar, ‘© tempo exigido para acompanhar a akeragto eo tempo exigido pata estar a alterao, Cada alterago fundamenta-sena Ultima em ‘eros de tna essa complesidade,entdo, quanto mais vost alters, mais tempo cada nova alteragio vai evar Ainda ¢ important fzet czas alteraes, mas voct deve estar tomando decsdes com base em nformagBes sobre elas, ndo apenas fazendo ateraghes por capricha ar prea eno rine Basicamene € aqui que voot decide usar alguma tecnologia cent fica preso a ela durante muito tempo porque vox est to dependen- te dela, Uma tecnologia nesse sentido ¢ “ruim’ se ela 0 prende (nao permite que voeé mude facilmente para agua outra tecnologia no fuuro), no vai ser flexvelosuiciente para suas necessdadesFururas ‘ou simplesmente no weno nivel de qualidade que voc? precisa para rojeta softwares simples comela, Matentenddo Programadores que no entendem plenamente seu trabalho tendem 1 desenvolver sistemas complerns Pode tomarse um ciclo vicosae ‘mabentendido leva complexidade,o que leva a mais mal-entendid, «assim por dint, Um dos melhores modos de melhorar suas habe lida de projeto€ esta certo de que vocéentende plenamente 0s sistemas ¢ ferramentas com que esté rabalhanda Quanto melhor ooo etende quanto mais woo sabe sabre software em gral. mais simple seus projets podem ser Pret r enham pro Basicamente, sso apenas significa “um fracasso em planjer uma aleraglo" AS coisas vio mudar, eexge-setabalho de projeo para manter a simplcidade enquanto o projeto crece. Vocé tem que projetar hem defdeo inicio e continua proetando bem enquanto © sistema se expande ~ caso contro, oct pode intredusir grande complexidade muito répido, porque com um projetoruim, cada now recurso multiplicaacomplexidade do cidigo em vezde apenas adicionar um pouguinho a ee ot Copldte 2 Rementnd ards Se por exemplo, vot eri seu proprio protcolo quando um bom ‘existe, ve va passar muito tempo tabalhando no protocola quan- ‘do poderia apenas esta trabalhando em seu software. Vocé quase rnunca deve tr qualquer dependéncia interna inventada, como um web server, um protocolo ot uma biblioteca importante, a menos ‘qu ese sj sex phi. AS nias eres em que se pode dizer que ‘einventara oda acitvelé quando quaisquer dos seuints pontos forem verdadeiros: a. Voce precisa de alg que ainda no existe bh Todas as rodas existentes so teenologias ruins que o prenderio. cy As*rodas"exsenes so incapaes de lidar com suas necessidades. 4. As “Todas” exstentes mio esto Sendo adequadamente submet dda 4 mantengo e voo! nao pode assumir a manutengio delas (porque, por exempl,voc#ndo tem o codigo fone) “Tados esses ftores so lentae gradualmente prejudiziais seu projet, nko imeiatamentedestrutivos A maiora eles apenas causa danos de Tongo prazo —algo que vet nfo veré durante um ano ou mals ~entio, ‘quando alguém oF prope, com frequéncis eles parcem inoensivos E, mesmo quando voc comes a implementéls, eles podem parecer (mos. Ma, com opassr do tempo =e particularmenteenguanto cada ‘vez mals desses se acumilam -, a complexidadetora-se mai aparente ese, e cese, cresce até que voc! sea outravtima dessa histria ddeborror cada ez mais comum, © Produto Que Nunca f Despachada. Complexidadee propésito © propésio bisizo de qualquer sistema no qual vc ext rablhando deveria ser bem simples. so ajuda a manero sistema como um todo to simples quanto ele possa realsicament ser Masse voc comepat 4 adicionar recursos que cumprem algum outo propésit, a coisas feardo muito complex apidamente Por cxemplo,o propésito basco de um editor de west € ajudar vot a ecrever coisas Se de epente tornissemos também capar de ler seus e-mail ele fara complicado, s es Foden PetSafe ‘oct pode imagina como parceria a nerface do usuario? Onde wee colocaria unos os boc? Diriames que esa € una violas do pro Pesto do editor de xa Vc nem mesmo expand 0 props dele toct spends adcionou recursos que nada tém nada yer com ele. “umm importante pens no propio do usria Se una stark tenando ie alga Ieaimene,0 propésto de um programa deveia nit primo (as plas cates oc sia pra desc “o) do propos do susie Por exemple dgames que propio do ‘suri ess inposon Ele que software co props €judar 2 psoas fazer seus imposes Sescu propio co prpést do usurio no combina, vox pone rent nts dfulando sua vida Por exemple el quer eros emails ‘avo propia so do programa que et mando mostrar anos 2s sti. ess propos no eto combina. (Quer er seu usuario ca zangade apuament? Tome dl para le aleanar seu poposta Fag com gUe Janes aparegam em 5 rst {quand cle eierentando fazer alga Adicone tans ecus08 90 3 rama que cle no consogue encontrar o cert, Use mito cones ‘Sranhor que cle io consegue entender HM mlios dos de ft isomas todos less esumem a imerei no propésito do susie ot viola propio bso do proprio pograma, a seres marquetis ou erent tn mets param programa que no ‘sti relent alinhada como propio bio do programa, como “Ser boniin “ter um proto antjos “ornare popula com mia de noi’ "usar as eenologas mai cents assim por dant Esse pessoas podem ser mportantes pra sua ogaizagi, mas las no sto as pessoas que devem decidir que se programa fz! Coma pojetsa de software ou geen tec € se tabulbo cuidar para {quco programa mantenha curso € manca vole sey props hisicn ‘inguem masta suit esa reponse As es vot podria semen er que ltr po sa mas ale mul «pera Tong raza E nto ¢ como se voc svesechegado a um fracasso de marketing com. «sa filosofia. Hi muitos, muitos produtos que foram extremamente ‘bem-sedidos atendo-sea apenas um propdsia O propésito do sabio (apo mpeade » € apenas limpar as coisas. sal apenas toma as coisas salgadas. Uma limpada apenas lumina as coisas. Mas todos esse sto produtos que sustentam enormes corporagdes hi décadas,Vocé no precisa ter um provdutocomplicado para ter marketing cia ~ woot so precisa ter co- nbecimentoehabilidade em marketing, que éuma sea completamente sepurada de projeto de software. Realments,ndo hd necessdade de romar-se sofsticado complexo € ‘entar fazer 500 coisas a0 mesmo tempo em um dnco programa. Os ‘suits fcam muito feces com um produto focado simples que ‘nunca viola seu peopdnito bisica Teatblogias ruins ‘Outeafontecomum de complexidade€ sclcionar «tecnologia erada para usar em seu sistema ~ paccularmente uma que acabard no resi findo bem a futur requisites, Conruda pode ser complica saber, sem ser capaz de prevero futuro, qual ecnologa vee deve escolher agora, Felizment, hi ts fatores que voet pode obserar para determina se uma tecnologia “ruin antes mesmo de comegar asl: porencial de sobrevivénca,interoperabilidade eatengdo qualidade. Potencial de sobrevivéndia © potencial de sobrevivencia de uma tecnologia € a probabilidade de {qu ela contnuaraa ser submetda a manutengia Se vot iar preso uma biblioeca ou alguma dependéncia que e toma obsoleta€ no sujet & manutencdo, woo! est reste a te algum problema, ‘oct pode te alguma ideia do potencal de sobreviéncia de um so tare observando o seu histrico recente de angamento de versdes Os ‘deserwolvedres tm langado com fequéncia novas verses que resolvem, ‘osverdadeios problemas do usuria?Além disse, com queintensidade ‘os desenvolvedoresreagema relatos de eos? Eles tim uma isa dedi feuss30 ou uma equipe de suporte que € mito aia? Hi muita pessoas ‘online falando sobre ess tenologia?Se uma tecnologia tem muita rg agora, voc pode er razovelcerteza de que els no vai morter tho ced. * ‘adm Star Observe também se um vendedor est4 promovendo a tecnologia, ou se cca ee eee See eee ae ee Popularidade Pre parecer que estos died que vet deve simplemente scons tecnologia mais popular que sets sus necrsades At cro pon 0 €verdae~tcnlapas polars tim mu pte de sober Cond voc em que obser a dicen ene feramentas queso valdamente popular ferramentas questo popula spenas porque ‘dem sgum op de movopolin ? No momento da redaio dee lv C& um excmplo de linge ‘alidamente populac Mutas pesos a warm em mutes orantzagbe Aliens para muitos ross ieee El assum de vies pads intemaconas tf aumereasmplerenages dees pris, incluino muitos compares deen Igameme wadon -Algumas tecnologia sho populares apenas porque voct deve ula ‘contd Seponks que + Empress X projet sn pip inguagem de rogramagia Ent ea proj um dap popula que act apenas ‘roramasesritos naga linguagem. Ese € 9 cso de "um vendor” mencionado no texto = linguagem pode puecer popular, mas na ‘edad em bu poten de sober, menos Qu ct ata mphmene pla indisw de sotware Interoperabilidade Interoperabildade € uma medida de quio fic éafastarse de uma tecnologia se voo? iver que fazer ss. Pra te maida da interopera- Dilidade de uma tecnologia, pergunte-s:“Podemosineragie com ex8 tecnologia de algum modo-padeia para quesej ell mudar pare outro sistema que segue oimesmo padeo?™ Por exempla hi padres interacionais para como um programa deve interagircom um sistema de banco de dados Alguns sistemas de bancos {de dados suportam essas normas muito bem. Se voce pegar um desses ——— ” ‘bons sistemas de bancos de dados poderd mudar para outrosistema de ‘banco de dados no futuro com pequenasalteragfes em seu programa. ‘Conrado alguns ours sistemas de bancos de dados no sto muito bons ‘em suportar padres. Se voo® quser mudar ene sistemas de bancos de dados que no suportam padres, teri que reescrever seu programa, nto quando excolher um dese sistemas no padronizades voce Bar ‘presoa eee ser ncapaz de mudarfaclmene pars um sistema diferente. ‘Atencio a qualidade Es a medida mais sje, mas iden € ver eo produto em tieliondo ex sua seus wate Seed pare eign scm ‘erfque se os desenoeores exo mistorandoclinpundo bse cig Es Scand mis cl on ais compleo st? As pessoas

Você também pode gostar