Baixe o app para aproveitar ainda mais
Prévia do material em texto
12 2 A CRISE DO SOFTWARE O termo crise do software vem sendo usado na ind stria de software desde 1968, quando houve a primeira admiss o aberta da exist ncia de uma crise latente na rea (DIJKSTRA, 1972, tradu o nossa). Naquele ano, ocorreu a Confer ncia da OTAN sobre Engenharia de Software (NATO Software Engineering Conference) em Garmisch, Alemanha, que considerado atualmente o momento hist rico do nascimento da disciplina de Engenharia de Software (BRYANT, 2000; EISCHEN, 2002). Diversos autores utilizam o termo crise do software , embora alguns o fa am com alguma ressalva, como o caso de Pressman (1997, p.16, tradu o nossa) que considera que temos uma crise que vem nos acompanhando h 30 anos e essa uma contradi o de termos. (...) O que n s temos de fato uma calamidade cr nica. O Standish Group, uma empresa localizada em Massachusetts, EUA, publica desde 1994 um estudo chamado de CHAOS Report. Trata-se de um amplo levantamento envolvendo milhares de projetos na rea de tecnologia da informa o. Atualmente, seus dados est o entre os mais utilizados para quantificar a crise do software . O CHAOS Report do ano 2000 (THE STANDISH GROUP INTERNATIONAL, 2001) apresenta uma colet nea de dados envolvendo 280 mil projetos de software nos Estados Unidos, os quais revelaram que: Em m dia, os atrasos representaram 63% mais tempo do que o estimado; Os projetos que n o cumpriram o or amento custaram em m dia 45% mais e No geral, apenas 67% das funcionalidades prometidas foram efetivamente entregues. 13 O Standish Group classifica o resultado final de um projeto nas seguintes categorias: Mal sucedido; Comprometido e Bem sucedido. Em 2000, o resultado final da pesquisa mostrou a seguinte distribui o entre os projetos: Figura 2.1: estat stica sobre o resultado final de projetos de software. Tais n meros, embora desastrosos, mostram um avan o em rela o aos resultados do primeiro levantamento realizado em 1994: 14 Figura 2.2: evolu o do resultado final de projetos de software ao longo dos anos. Na terceira Confer ncia Internacional sobre Extreme Programming, que ocorreu na It lia em 2002, Jim Johnson, presidente do Standish Group, apresentou um estudo revelador sobre a utiliza o das funcionalidades nos projetos que foram pesquisados pelo Standish Group (JOHNSON, 2002). Os resultados demonstram que 45 por cento das funcionalidades encontradas em um sistema t pico jamais s o usadas e 19 por cento raramente s o usadas: 15 Figura 2.3: estat stica sobre a utiliza o de funcionalidades. Al m de as estat sticas mostrarem, em n meros, o significado do que vem sendo chamado h quase quarenta anos de crise do software , a an lise de casos isolados demonstra a exist ncia de grandes varia es nos resultados dos projetos. o caso, por exemplo, de dois sistemas desenvolvidos na rea governamental dos EUA. H alguns anos, os estados americanos da Fl rida e Minnesota se lan aram no desafio de criar um Sistema de Informa es para o Bem Estar das Crian as (Statewide Automated Child Welfare Information System SAC IS). Cada estado adotou uma abordagem distinta e a diferen a de resultados significativa. Na Florida, o desenvolvimento do sistema teve in cio em 1990 e foi estimado em oito anos a um custo de US 32 milh es. Em 2002, a Florida j havia gasto US 170 milh es e o sistema foi re-estimado para ser finalizado em 2005 a um custo de US 230 milh es. Por sua vez, Minnesota come ou a desenvolver essencialmente o mesmo sistema em 1999 e o finalizou no in cio de 2000 ao custo de US 1,1 milh o. A diferen a de produtividade de 200:1(POPPENDIECK & POPPENDIECK, 2003). 16 Ao analisar os fatores que levam tantos projetos de software a fracassarem e outros (poucos) a serem bem sucedidos, relevante avaliar o que significa desenvolver um software. Quais s o os fatores que caracterizam o desenvolvimento de software e diferenciam os projetos desta rea 17 3 A NATUREZA DO SOFTWARE A compreens o dos fatores que levam crise do software passa primeiramente pela compreens o da natureza do software e como ele vem sendo tratado ao longo dos anos. Essa an lise envolve duas partes: os aspectos b sicos que caracterizam o software e as met foras que s o utilizadas no desenvolvimento do mesmo. O estudo detalhado do software aponta para as seguintes caracter sticas (BROOKS, 1995; BRYANT, 2000; BUHRER, 2000; KRUTCHTEN, 2001): Complexidade; Conformidade; Maleabilidade; Invisibilidade; Aus ncia de leis b sicas; Imaturidade e Baixo custo de manufatura. 3.1 Complexidade Frederick Brooks, apresenta no artigo No silver bullet: essences and accidents of Software Engineering (1987) o que considera como sendo as propriedades essenciais do software e come a tratando do problema da complexidade. Ele considera que sistemas de software normalmente possuem uma quantidade elevada de elementos distintos, o que os torna mais complexos que qualquer outro tipo de constru o humana. Quando as partes de um software s o semelhantes, as mesmas costumam ser agrupadas em m todos, classes e outros elementos. Assim, medida que um sistema 18 cresce em tamanho, cresce tamb m a quantidade de partes distintas. Esse comportamento difere profundamente de outras constru es, tais como computadores, pr dios ou autom veis, nos quais se encontram elementos repetidos em abund ncia. Isso leva os programas a terem um n mero extremamente elevado de estados. Computadores, por exemplo, s o produtos bastante complexos que cont m uma elevada quantidade de estados. Softwares, por sua vez, costumam ter uma quantidade bem maior de estados. Outro problema est ligado necessidade de escalar. Fazer um software escalar n o significa apenas repetir os mesmos elementos em tamanho maior. Normalmente necess rio o aumento no n mero de elementos distintos, elevando ainda mais a quantidade de estados de um sistema, e o que pior, de forma n o linear. Brooks acredita que grande parte dos problemas cl ssicos relacionados ao desenvolvimento de sistemas deriva diretamente da complexidade que est na ess ncia de qualquer software e sua correspondente eleva o n o linear com o aumento de tamanho. A complexidade dificulta a comunica o entre os membros da equipe de desenvolvimento e torna dif cil enumerar e compreender todos os poss veis estados do programa, resultando em falta de confiabilidade. Por sua vez, a complexidade das fun es gera dificuldades para invoc -las, tornando os sistemas dif ceis de serem utilizados. A complexidade estrutural tamb m torna dif cil estender os programas para que incorporem novas funcionalidades sem criar efeitos colaterais. Al m disso, dif cil ter uma vis o geral do software, o que impede que se alcance integridade conceitual no mesmo. Finalmente, o esfor o de aprendizado e transmiss o de conhecimento se torna 19 bastante elevado, raz o pela qual trocas de pessoal costumam acarretar preju zos significativos. A complexidade do software colabora e explica, em parte, os resultados apresentados no cap tulo anterior. E importante compreender que, segundo Brooks, trata-se de um problema que est na ess ncia do software. Isso significa que n o existem ferramentas ou t cnicas que possam evit -lo. Elas naturalmente podem ajudar a tratar a complexidade, mas a alta complexidade sempre estar presente nos projetos de software. Segundo einberg (1971, p.15, tradu o nossa), (...) programar n o apenas um comportamento humano; comportamento humano complexo. 3.2 Conformidade A complexidade um problema que tamb m afeta outras reas de conhecimento, como por exemplo a f sica. Esta, al m de lidar com objetos extremamente complexos, eventualmente chega ao ponto de lidar com elementos no n vel fundamental das part culas. Apesar disso, o f sico se baseia na convic o de que existam princ pios unificadores,os quais, uma vez descobertos, facilitam a compreens o e o tratamento dos problemas. Al m disso, princ pios f sicos tendem a ser est veis. Infelizmente, sistemas de software n o costumam existir em conformidade com princ pios fundamentais e est veis. Grande parte da complexidade com a qual o desenvolvedor deve lidar arbitr ria. Ela imposta sobre ele por institui es e sistemas humanos, com os quais o software precisa estar em conformidade. Tal conformidade din mica, visto que os sistemas humanos mudam com o tempo, as pessoas mudam e o software passa a ter que se adequar a novas realidades (BROOKS, 1987). 20 3.3 Maleabilidade O software, por ser digital, possui uma maleabilidade extremamente elevada e infinitamente superior quela encontrada em outros tipos de produtos, como aqueles compostos por elementos f sicos. Isso gera press es permanentes por mudan as nos sistemas. Fazendo um comparativo, observa-se que constru es tais como pr dios, carros e computadores tamb m sofrem press es por mudan as. Entretanto, por serem formadas de elementos f sicos, os custos das mudan as s o melhores compreendidos e observados, o que reduz os caprichos daqueles que as desejam. Software, por sua vez, apenas pensamento, o que o torna infinitamente male vel. Isso notado pelas pessoas de um modo geral, que naturalmente pressionam por mais mudan as, por considerarem que as mesmas ter o um custo reduzido (BROOKS, 1987). A maleabilidade do software difere, portanto, daquela encontrada na engenharia civil. Se voc constr i uma ponte, voc n o tem este tipo de flexibilidade. Voc n o pode dizer Hum, agora que eu j vejo os pilares, eu gostaria que essa ponte fosse colocada duas milhas rio acima (KRUTCHTEN, 2001, tradu o nossa). Na situa o ilustrada acima, qualquer pessoa seria capaz de avaliar o enorme custo de mover a ponte de uma posi o para a outra, o que tenderia a reduzir ou eliminar completamente a mudan a. Mas, no caso do software, a sua maleabilidade torna as mudan as muito mais f ceis e menos custosas. Seus usu rios t m a exata percep o de que infinitamente mais f cil alterar um software que a posi o de uma ponte, o que os leva a solicitar mudan as com mais freq ncia e mais intensidade. 21 3.4 Invisibilidade Ao elaborar um projeto, diversos profissionais t m a oportunidade de utilizar uma importante ferramenta: abstra es geom tricas. Um arquiteto, por exemplo, tem a possibilidade de utilizar uma planta baixa que o ajuda, bem como ajuda seu cliente a avaliar espa os, fluxos de tr nsito, disposi o de elementos, entre outros. Com ela, torna-se simples identificar contradi es e omiss es. Ao capturar a realidade geom trica, em uma abstra o geom trica correspondente, o arquiteto tem a sua disposi o uma ferramenta que facilita e melhora o seu trabalho. J o software, invis vel e imposs vel de ser visualizado, visto que sua realidade n o se encontra inserida de modo intr nseco no espa o. Assim, n o possui uma representa o geom trica disposi o, da mesma forma que terras possuem mapas, por exemplo. Ao se tentar diagramar a estrutura de um software, notamos que ela constitu da n o por um, mas por v rios grafos direcionados de forma gen rica, superpostos uns sobre os outros. Os v rios grafos podem representar o fluxo de controle, o fluxo de dados, padr es de depend ncia (...) (BROOKS, 1987, tradu o nossa). Brooks acredita que, embora tenha havido avan os no sentido de simplificar as estruturas de software, elas continuam sendo praticamente imposs veis de serem visualizadas. Isso gera uma defici ncia para o desenvolvedor que acaba n o podendo contar com uma importante ferramenta. Esta falta n o apenas retarda o processo de design dentro de uma mente, como tamb m prejudica severamente a comunica o entre mentes diferentes (BROOKS, 1987, tradu o nossa). 22 3.5 Inexist ncia de princ pios b sicos Como j vimos, o software n o possui leis fundamentais como a f sica, tornando dif cil pensar sobre ele sem efetivamente constru -lo. Al m disso, os poucos padr es de engenharia de software que conhecemos se baseiam apenas em boas pr ticas, enquanto c digos de constru o em outras disciplinas se originam em s lidos princ pios f sicos (KRUTCHTEN, 2001, tradu o nossa). 3.6 R pida evolu o tecnol gica As t cnicas de desenvolvimento de software, ferramentas e o pr prio ambiente de software mudam em um ritmo profundamente acelerado. Isso torna dif cil consolidar uma base de conhecimento e pressiona os profissionais a se treinarem e re-treinarem permanentemente. Portanto, os profissionais parecem conviver com um eterno re- come o, pois aquilo que aprenderam h pouco tempo, perde a utilidade com enorme rapidez. Al m disso, a engenharia de software, ao contr rio de outras disciplinas, n o se beneficia de centenas ou at mesmo milhares de anos de experi ncia (KRUTCHTEN, 2001, tradu o nossa). 3.7 Baixo custo de manufatura Quando os desenvolvedores de software tratam do design de um aplicativo, normalmente est o se referindo a uma descri o de alto n vel das estruturas do sistema. Freq entemente acreditam que elaborar este design a parte complexa, enquanto a codifica o uma parte mec nica. Comparando com uma f brica de autom veis, como se elaborar o design se assemelhasse ao trabalho do engenheiro que projeta um novo modelo, enquanto a codifica o o trabalho mec nico de produzir tal modelo no ch o de f brica. 23 Segundo Krutchten (2001), isso n o corresponde realidade. Praticamente todo o trabalho do desenvolvedor, incluindo a codifica o, representa um esfor o de design. Usando a compara o anterior, praticamente todo o trabalho de desenvolvimento de software pode ser comparado ao trabalho do engenheiro que projeta um novo autom vel. A manufatura de um autom vel, ou seja, o trabalho realizado no ch o de f brica para reproduzir o mesmo modelo in meras vezes, buscando eliminar varia es, corresponde em software ao trabalho de compilar, empacotar e gerar um CD, por exemplo. Este o trabalho que pode, automatizado, e essencialmente o trabalho que se assemelha ao que feito na linha de produ o de uma ind stria, com uma importante diferen a: o custo. Manufaturar um software tem um custo extremamente baixo. Comparando-se com uma ind stria automobil stica, por exemplo, quase como se n o existisse custo de manufatura. Quase todo o investimento est associado ao design. Uma vez projetado, o software pode ser replicado infinitas vezes, fazendo-se uma c pia de arquivos, gerando- se um CD ou transferindo-se o aplicativo pela Internet (KRUTCHTEN, 2001). Projetar um novo modelo de autom vel um trabalho essencialmente dif cil, pouco previs vel, demorado e com potencial limitado de ser acelerado. S o necess rias v rias idas e vindas durante o projeto (POPPENDIECK & POPPENDIECK, 2003). A automa o n o exerce um efeito t o dr stico na velocidade de elabora o do projeto, quanto exerce na manufatura do autom vel. A partir das caracter sticas que analisamos, podemos compreender que sempre haver uma crise do software , pois a causa de muitos dos problemas est na pr pria natureza do software (BRYANT, 2000, tradu o nossa). O que certamente podemos 24 fazer reconhecer estas caracter sticas e buscar solu es que as levem em considera o, de modo a atenuar os problemas que as equipes de desenvolvimento costumam vivenciar. 25 4 MET FORAS E O DESENVO VIMENTO DE SOFTWARE H d cadas, a crise do software vem inspirando estudiosos e profissionais a criarem propostas para solucion -la. De um modo geral, tais solu es carregam met foras que procuram lan ar luz sobre a natureza do software e poss veis abordagens para trat -la. Como mostra Bryant (2000), a pr tica de desenvolvimento de software inevitavelmente fundada sobre met foras. A pr pria palavra software uma met fora. A compreens o das met foras, que v m sendousadas historicamente, pode ser til para o entendimento de diversos fatores que colaboram para a crise do software , ao mesmo tempo em que pode nos ajudar a visualizar novas solu es, atrav s do uso de novas met foras. A tens o entre sua invisibilidade e intangibilidade por um lado e sua complexidade por outro, praticamente exige mecanismos e alus es metaf ricas (BRYANT, 2000, tradu o nossa). Ao longo dos anos, a met fora que mais vem influenciando o processo de desenvolvimento de software a da engenharia. Software vem sendo visto como um processo de constru o e de fabrica o. Em tal met fora, utilizam-se termos tais como constru o, desenvolvimento, manuten o, prototipagem, entre outros (BRYANT, 2000). Um dos efeitos mais marcantes da crise do software , a busca permanente por solu es que possam tornar os projetos: Mais produtivos; Mais previs veis e Com resultados de melhor qualidade. 26 Felizmente, outras disciplinas se depararam com esta mesma busca no passado. Algumas foram extremamente bem sucedidas, tendo alcan ado os tr s objetivos descritos acima. Em particular, vale a pena analisar a ind stria de produ o em massa, que vem melhorando continuamente nestes quesitos h alguns s culos (DRUCKER, 1999; TOFFLER, 2001). 4.1 A ind stria de produ o em massa Alvin Toffler (2001) avalia a hist ria da humanidade como uma sucess o de ondas de mudan a em marcha, as quais focalizam a nossa aten o n o apenas para as continuidades hist ricas (por mais importantes que sejam), mas tamb m as descontinuidades, ou seja, as inova es e interrup es. Come ando com a simpl ssima id ia de que o aparecimento da agricultura foi o primeiro ponto decisivo do desenvolvimento social humano, e de que a revolu o industrial foi a segunda grande ruptura, olha cada um destes acontecimentos n o como um discreto evento no tempo, mas como uma onda de mudan a avan ando a uma certa velocidade (TOFFLER, 2001, p.27). A Revolu o Industrial, que nos lan ou na Segunda Onda de mudan as, trouxe consigo uma s rie de regras, consistindo em seis princ pios inter-relacionados (...). Nascendo naturalmente da desuni o da produ o e do consumo, estes princ pios afetavam todos os aspectos da vida (...) (TOFFLER, 2001, p.59). Os seis princ pios b sicos apontados por Toffler (2001) s o: Padroniza o; Especializa o; Sincroniza o; Concentra o; Maximiza o e 27 Centraliza o. 4.1.1 Padroniza o A padroniza o foi um princ pio inventado por um construtor de m veis chamado Thonet que (...) descobriu que, em vez de fabricar cem cadeiras, cada uma diferente da outra, muito mais lucrativo faz -las todas iguais: o desperd cio menor, a produ o mais r pida e a menor custo (MASI, 2000, p.59). Pelos seus m ritos, tal princ pio foi levado s ltimas conseq ncias por Frederick inslow Taylor no in cio do s culo . Ele prop s que o trabalho podia ser cient fico, caso fosse poss vel padronizar os passos executados pelos trabalhadores para executarem suas atividades. Sobretudo, Taylor acreditava que havia uma maneira melhor (padr o) de realizar cada tarefa, uma ferramenta melhor (padr o) para execut - la com ela e um tempo estipulado (padr o) no qual podia ser completada (TOFFLER, 2001, p.61). 4.1.2 Especializa o Em 1776, no auge da Revolu o Industrial, Adam Smith publicou um dos mais famosos e importantes livros de economia: A riqueza das na es. No in cio da obra, ele aborda o princ pio da especializa o, declarando que o maior aprimoramento das for as produtivas do trabalho, e a maior parte da habilidade, destreza e bom senso com os quais o trabalho em toda parte dirigido ou executado, parecem ter sido resultados da divis o do trabalho (SMITH, 1996, p.65). A divis o do trabalho uma das caracter sticas mais importantes do processo de industrializa o devido ao enorme aumento de produtividade que acabou 28 proporcionando. Como exemplo, Toffler faz refer ncia Smith, que ao visitar uma f brica de alfinetes ofereceu o seguinte relato: Um trabalhador nico de velho estilo, efetuando todas as opera es necess rias sozinho, escreveu, podia produzir apenas um punhado de alfinetes por dia n o mais de 20 e talvez nem um. Em contraste, Smith descrevia uma manufatura que ele tinha visitado, na qual se exigiam 18 opera es diferentes efetuadas por dez trabalhadores especializados, cada um efetuando apenas uma ou algumas fases. Juntos, conseguiam produzir mais de 48 mil alfinetes por dia mais de quatro mil e oitocentos por trabalhador (TOFFLER, 2001, p.62). 4.1.3 Sincroniza o O princ pio da sincroniza o est associado necessidade de reunir os trabalhadores em um local no qual se encontram os meios de produ o, ou seja, na f brica. Isso causa a necessidade de que as pessoas estejam juntas ao mesmo tempo e, portanto, tenham os mesmos hor rios. Se f ssemos artes os numa oficina de vasos, cada um fabricaria um vaso inteiro. Se, ao contr rio, trabalh ssemos numa linha de montagem, voc enroscaria um parafuso e, cinco segundos depois, eu deveria apertar outro: logo, dever amos ambos estar presentes no instante em que a cadeia se inicia (MASI, 2000, p.61). Al m da interdepend ncia intensificada, m quinas caras n o podem ficar ociosas e operam ao seu ritmo pr prio (TOFFLER, 2001, p.64). Por essa raz o, a pontualidade se torna essencial e toda a f brica precisa operar em sincronia, de acordo com o ritmo estabelecido pelas m quinas. 4.1.4 Concentra o A concentra o (ou economia de escala) se baseia na id ia de que (...) se eu concentro dez empresas de mil pessoas numa nica megaempresa sic de dez mil pessoas, ser necess rio um n mero menor de dirigentes, de empregados, de fiscais e o lucro ser maior (MASI, 2000, p.66). Naturalmente, as fontes de economia podem 29 englobar tamb m outros fatores, tais como a reutiliza o de equipamentos, o maior poder de barganha com fornecedores e maior capacidade de impor pre os vantajosos no mercado. 4.1.5 Maximiza o A maximiza o est presente na tentativa de maximizar o lucro das empresas, bem como o tamanho e a taxa de crescimento das mesmas. Neste sentido, Taylor concebe a f rmula E P/H, que quer dizer que a efici ncia (E) igual a P, de produ o, dividido por H, horas de trabalho (MASI, 2000, p.65). A busca por maior produtividade gerou efeitos importantes no mundo inteiro, a um tal ponto que autores como Peter Drucker consideram que a acentuada eleva o da produtividade ao longo do s culo foi a respons vel pela atual exist ncia de pa ses desenvolvidos. Menos de uma d cada depois que Taylor examinou o trabalho e analisou-o, a produtividade do trabalhador manual iniciou sua ascens o sem precedentes. Desde ent o, ela tem subido regularmente taxa de 3,5% ao ano, o que significa que aumentou 50 vezes desde Taylor. Nesta realiza o baseiam-se todos os ganhos econ micos e sociais do s culo . A produtividade do trabalhador manual criou aquelas que hoje chamamos de economias desenvolvidas . Antes de Taylor, isso n o havia todas as economias eram igualmente subdesenvolvidas . Hoje, uma economia subdesenvolvida, ou mesmo emergente , aquela que ainda n o tornou produtivo o trabalhador manual (DRUCKER, 1999, p.112). Analisando a cita o de Drucker, fundamental notar o uso da express o trabalhador manual e, sobretudo o fato de que o aumento de produtividade ao qual ele se refere diz respeito apenas ao trabalhador manual . Voltaremos a este assunto nas pr ximas se es, quando come aremos a analisar a produtividade do trabalho de desenvolvimento de software. 30 4.1.6 Centraliza o Da mesma forma que a Segunda Onda trouxe consigo a forte divis o entre produ o e consumo (TOFFLER, 2001), criou tamb m a divis o entre planejamento e execu o, isto , deixou claro que existem aqueles que pensam (e conseq entemente mandam) e aqueles que fazem (e, portanto, obedecem). Utiliza-se a premissa de que (...) a organizao deve ter a forma de uma pir mide: o v rtice sabe tudo e pode tudo. Entre quem pensa e quem executa, a divis o cristalina (MASI, 2000, p.66). 4.2 O desenvolvimento de software como trabalho do conhecimento No in cio deste cap tulo, apontamos a busca por solu es que possam tornar os projetos de desenvolvimento de software mais produtivos, mais previs veis e com resultados de melhor qualidade. Esses objetivos, entre outros, foram alcan ados com sucesso pela ind stria de produ o em massa utilizando os princ pios explicados nas se es anteriores, que est o presentes no cotidiano. Desde 1776, quando Adam Smith defendeu a divis o do trabalho em A riqueza das na es , racionalizar a produ o vem servindo como um m todo provado para elevar a qualidade, reduzir custos e aumentar a efici ncia (EISCHEN, 2002). Uma quest o relevante que se poderia levantar se n o seria poss vel utilizar estes mesmos princ pios no desenvolvimento de software e obter os mesmos resultados positivos. Esse questionamento n o novo. Ele acompanha a ind stria de software h bastante tempo. Muitos acreditam que poss vel mapear estes princ pios no desenvolvimento de software e cada vez mais encontramos met foras que procuram aproxim -lo do processo de produ o de uma f brica, culminado inclusive na atual id ia de f brica de software t o extensamente divulgada no mercado. 31 Em janeiro de 2005, uma busca pela express o f brica de software no Google1 gerou como resultado 333 mil refer ncias, dentre as quais era poss vel identificar uma grande quantidade de empresas brasileiras que atuam no desenvolvimento de software, desde pequenas a grandes. Utilizando-se o equivalente em ingl s, ou seja, a express o software factory, o Google retornou 10.2 milh es de refer ncias. Tais n meros d o uma id ia da extens o desta met fora e da import ncia que lhe dedicada atualmente. Seu uso facilmente compreens vel quando observamos os resultados da produ o industrial e o tremendo impacto gerado pelos princ pios descritos anteriormente sobre o trabalho manual (DRUCKER, 1999). A express o trabalho manual nos chama a aten o para a possibilidade de exist ncia de outros tipos de trabalho, os quais podem ou n o ser beneficiados pelos princ pios da industrializa o em massa, ou Segunda Onda, para usar as palavras de Toffler (2001). Outro tipo de trabalho que est cada vez mais presente na sociedade contempor nea o trabalho do conhecimento. Compreender a diferen a entre trabalho manual e trabalho do conhecimento relevante tendo em vista o fato de que (...) grande parte da discuss o atual (...) parece assumir que programar similar produ o industrial, o programador sendo visto como (...) um componente que precisa ser controlado (...) e que pode ser substitu do facilmente (COCKBURN, 2002, p.237, tradu o nossa). Diversos autores defendem a teoria de que existem pelo menos dois grupos de trabalhadores bastante distintos: os trabalhadores manuais e os trabalhadores do conhecimento , utilizando-se a nomenclatura adotada por Drucker (1999). Entre estes autores destacam-se Cockburn (2002), DeMarco (2001), DeMarco e Lister (1999; 1 Ferramenta de busca na Internet. 32 1987), De Masi (2000), Drucker (1999), Poppendieck e Poppendieck (2003) e Toffler (2001). Os trabalhadores do conhecimento existem h bastante tempo, mas ao longo da Segunda Onda, isto , da Era Industrial, o n mero de trabalhadores manuais era maior e mais significativo do ponto de vista de resultados para a sociedade. Entretanto, medida em que avan amos pela Terceira Onda, conforme a nomenclatura de Toffler (2001), ou a Sociedade P s-industrial, segundo De Masi (2000) ou a Revolu o da Informa o, segundo Drucker (1999), os trabalhadores do conhecimento est o se tornando rapidamente o maior grupo isolado da for a de trabalho de todos os pa ses desenvolvidos (DRUCKER, 1999, p.116). Os desenvolvedores de software encontram-se entre os trabalhadores do conhecimento (COCKBURN, 2002; DEMARCO & LISTER, 1987; POPPENDIECK & POPPENDIECK, 2003). Portanto, fundamental avaliar os fatores que podem ser utilizados para elevar a produtividade, a previsibilidade e a qualidade do trabalhador do conhecimento , os quais, n o s o, necessariamente, os mesmos que regem o trabalho manual . De fato, como veremos adiante, tais fatores, embora ainda n o sejam t o bem conhecidos, parecem se distanciar profundamente daqueles tradicionalmente usados para os trabalhadores manuais . Segundo Drucker (1999), existem seis fatores essenciais que determinam a produtividade do trabalhador do conhecimento. S o eles: 1. Definir qual a tarefa a ser feita; 2. Permitir que os pr prios trabalhadores se auto-gerenciem. Ou seja, assegurar que eles tenham autonomia e responsabilidade sobre o que produzem; 33 3. Assegurar que os trabalhadores tenham a oportunidade de inovar; 4. Aprendizado e ensino cont nuo; 5. Qualidade um fator t o o mais importante que a quantidade produzida e 6. Os trabalhadores do conhecimento precisam ser tratados como ativos e n o como custo . Al m disso, precisam querer trabalhar para a organiza o. Portanto os princ pios apresentados anteriormente, sobre a produtividade do trabalhador manual , n o se aplicam ao trabalho do conhecimento , podendo inclusive prejudic -lo. O que os empregadores da Terceira Onda precisam cada vez mais, por conseguinte, s o homens e mulheres que aceitem responsabilidade, que compreendam como o seu trabalho combina com o dos outros, que possam manejar tarefas cada vez maiores, que se adaptem rapidamente a circunst ncias modificadas e que estejam sensivelmente afinados com as pessoas em volta deles. (...) A firma da Terceira Onda exige pessoas que sejam menos pr - programadas e mais criativas. (...) Tais pessoas s o complexas, individualistas, orgulhosas das maneiras como diferem umas das outras. (...) Elas procuram significado juntamente com recompensa financeira (TOFFLER, 2001, p.378). De Masi (2000) cita a iener erkst tte como exemplo de uma organiza o que sabia alcan ar elevada produtividade para trabalhadores do conhecimento utilizando premissas praticamente opostas quelas propostas por Taylor. Tratava-se de uma cooperativa em Viena onde se produzia, por exemplo, cart es postais, papel de parede, talheres, m veis e at mesmo bairros inteiros. Nela, o processo de cria o e produ o era completamente diferente daqueles de Taylor: escassa divis o do trabalho, pouca padroniza o, pouca especializa o, pouca sincroniza o, pouca centraliza o, pouca maximiza o. Com resultados (...) extraordin rios (MASI, 2000, p.69). 34 4.2.1 Definir a tarefa Os trabalhadores manuais s o programados pela tarefa que executam e normalmente executam um conjunto reduzido de tarefas repetidas vezes. As tarefas realizadas por um trabalhador do conhecimento, entretanto, costumam ser maiores, mais complexas e pouco estruturadas. Al m disso, no dia-a-dia, um trabalhador do conhecimento solicitado a fazer in meras tarefas distintas. Os engenheiros est o constantemente sendo afastados de sua tarefa por terem de redigir um relat rio ou reescrev -lo, serem solicitados para uma reuni o etc (DRUCKER, 1999, p.118). Drucker (1999) considera que, diante desta realidade, o aspecto mais importante da produtividade do trabalhador do conhecimento a capacidade de priorizar. Trabalhadores do conhecimento, incluindo os desenvolvedores de software, se envolvem em uma infinidade de atividades diferentes, as quais evoluem e mudam dinamicamente ao longo do tempo. Para obter a m xima produtividade, necess rio que eles saibam priorizar e concentrar o m ximo de esfor os naquilo que mais pode fazer diferen a para a organiza o ou seu projeto a cada dia de trabalho. 4.2.2 Qualidade A produtividade do trabalho manual est fortemente atrelada ao volume produzido,desde que se respeitem os padr es m nimos de qualidade. O mesmo n o acontece com o trabalho do conhecimento, pois neste caso, a qualidade a ess ncia da produ o. Por exemplo, ao julgar o desempenho de um professor, n o questionamos quantos alunos pode haver em uma classe, mas quantos deles aprendem algo e esta uma pergunta de qualidade (...) (DRUCKER, 1999, p.117). 35 O trabalhador do conhecimento deve executar suas atividades de modo a atingir n o apenas a qualidade m nima, mas sim a m xima qualidade poss vel. A quest o da quantidade s come a a fazer sentido depois de se alcan ar o maior n vel de qualidade. No caso do desenvolvimento de software, por exemplo, onde t cnicas, ferramentas e ambientes de software evoluem em ritmo extremamente acelerado, atingir alta qualidade est diretamente associado a um processo de aprimoramento cont nuo. Portanto, a produtividade do desenvolvedor de software est profundamente associada a sua capacidade de executar suas atividades com qualidade elevada e continuar aprendendo tanto quanto poss vel medida que as executa. 4.2.3 O trabalhador do conhecimento como ativo Na l gica do trabalho manual, acredita-se comumente que o trabalhador um custo e, ao mesmo tempo uma pe a da engrenagem que constitui os sistemas de neg cio de uma organiza o. Com exce o do custo de turnover2, o gerenciamento de trabalhadores, baseado em mil nios de trabalho quase totalmente manual, ainda assume que (...) um trabalhador manual igual a outro (DRUCKER, 1999, p.121). A perda de um trabalhador manual gera custos de recontrata o, re-treinamento etc, bem como a possibilidade de se perder a experi ncia dessa pessoa. Apesar disso, o trabalhador manual ainda visto como um custo e basicamente como uma pe a intercambi vel. No caso do trabalhador do conhecimento a situa o bem mais grave. O trabalhador manual n o possui os meios de produ o. Portanto, sua experi ncia s valiosa no local em que trabalha, ela n o port vel. Por sua vez, os trabalhadores do 2 Custo de substitui o de um trabalhador. 36 conhecimento possuem os meios de produ o. O conhecimento que est entre suas orelhas um ativo enorme e totalmente port til. Pelo fato de possu rem seus meios de produ o, eles s o m veis (DRUCKER, 1999, p.121). Hoje, se sou um publicit rio e estou tentando criar um slogan, quando saio do escrit rio e volto para casa, levo o trabalho comigo: na minha cabe a. A minha cabe a n o p ra de pensar e s vezes acontece que posso achar a solu o para o slogan em plena noite, ou debaixo do chuveiro, ou ainda naquele estado intermedi rio entre o sono e o despertar (MASI, 2000, p.205). A perda de um trabalhador do conhecimento tem conseq ncias mais s rias, porque significa tamb m a perda do meio de produ o e de todo o aprendizado obtido ao longo do tempo. Portanto, o trabalhador do conhecimento precisa ser encarado como um ativo que deve ser mantido na organiza o. Se os custos de substitui o s o elevados para o trabalhador manual, eles s o significativamente maiores para os trabalhadores do conhecimento. 4.2.4 Motiva o No trabalho do conhecimento (tamb m chamado de trabalho intelectual por De Masi) o trabalho pouco estruturado e n o existe uma linha de produ o que imponha o ritmo de trabalho. Portanto, preciso que cada trabalhador decida produzir com a m xima qualidade no ritmo mais gil poss vel. Por esta raz o, no trabalho intelectual a motiva o tudo (MASI, 2000, p.223). Segundo Cockburn (2002, p.63, tradu o nossa), existem tr s tipos de recompensa que podem manter a motiva o intr nseca de uma pessoa: orgulho no trabalho, orgulho de realizar e orgulho da contribui o. Brooks (1995), por sua vez, acredita que o trabalho de desenvolvimento de software proporciona 5 tipos de satisfa es: 37 A satisfa o de montar coisas; A satisfa o de montar coisas que s o teis para outras pessoas; O fasc nio de montar objetos que se assemelham a quebra- cabe as; A satisfa o de estar sempre aprendendo coisas n o repetitivas e O prazer de trabalhar em um meio t o male vel pensamento puro que, apesar de male vel, existe, se move e trabalha de uma forma diferente dos objetos do mundo f sico (BROOKS, 1995, p.230, tradu o nossa). Se motiva o essencial para elevar a produtividade do trabalhador do conhecimento, precisamos compreender que fatores levam uma pessoa a ficar motivada ou desmotivada. De um modo geral, n o f cil motivar algu m, pois necess rio que a pr pria pessoa seja capaz de se motivar. Entretanto, relativamente f cil reduzir ou eliminar a motiva o de um trabalhador do conhecimento. O trabalhador do conhecimento precisa compreender o prop sito daquilo que faz. Voc n o pode lhe dizer para fazer alguma coisa porque voc o chefe e voc diz que precisa ser feito. (...) Voc n o pode lhe impor objetivos que n o lhe fa am sentido (DEMARCO, 2001, p.28, tradu o nossa). Al m disso, n o se pode estruturar as atividades de um trabalhador do conhecimento. Ele tem que ser o pr prio respons vel pela forma como o trabalho conduzido. Alem disso, tem que saber o que deve ser feito e porque. A ess ncia da Administra o Cient fica de Taylor ensinar ao trabalhador manual a melhor forma de executar uma tarefa. Ou seja, estruturar a atividade fundamental. No trabalho do conhecimento ocorre o inverso. N o se pode estruturar a atividade e, sobretudo, n o se pode estrutur -la de uma forma que n o d ao trabalhador a chance de crescer. Crescimento essencial para ele, t o essencial quanto o contra- 38 cheque. Voc n o pode mais esperar que ele trabalhe sem desafios significativos (...) (DEMARCO, 2001, p.28, tradu o nossa). A preocupa o em padronizar a forma de execu o das atividades de um trabalhador do conhecimento tamb m se mostra ineficaz porque acabamos nos concentrando na mec nica da atividade que uma parte pouco significativa em rela o ao trabalho como um todo. A forma como o trabalho executado dentro dos n s do organograma n o nem de perto t o importante quanto estabelecer qu o ampla e rica s o as conex es entre os trabalhadores (DEMARCO, 2001, p.108, tradu o nossa). Ao lidar com atividades mais complexas, os trabalhadores do conhecimento normalmente necessitam da ajuda de diversos colegas para atingir seus objetivos. Por essa raz o, a riqueza da comunica o, do relacionamento e da colabora o entre os trabalhadores do conhecimento mais relevante que a forma como as atividades s o estruturadas. Por isso a preocupa o em padronizar o modo de trabalho pouco eficaz e, eventualmente, prejudicial. Especialmente quando os padr es adotados prejudicam o fluxo de comunica o ou reduzem as chances de se executar um trabalho de alta qualidade do qual se possa ter orgulho. 4.3 A produ o enxuta A mesma ind stria automobil stica que levou a industrializa o em massa s ltimas conseq ncias atrav s do Taylorismo criou, algumas d cadas depois, um processo de produ o diferente, que aborda de maneira diferente o trabalho do conhecimento. Desta vez, ao inv s da Ford, os conceitos vieram da Toyota, no Jap o. Na d cada de 1940, a Toyota buscou formas de produzir autom veis com maior agilidade e qualidade, mas com custos mais reduzidos. Al m disso, precisava viabilizar um modelo de produ o que n o fosse em massa, visto que naquele momento n o havia 39 demanda no Jap o para absorver uma oferta baseada na produ o em massa. Assim a Toyota criou a produ o enxuta (lean production, em ingl s) que foi se aperfei oando ao longo de d cadas e atualmente mais conhecida pelo termo just-in-time (POPPENDIECK & POPPENDIECK, 2003). Atualmente, a Toyota uma das montadoras de autom veis mais lucrativas do mundo. Ela fabrica produtos excelentes, cresce rapidamente, tem altas margens de lucratividade e fatura muito dinheiro (BECK & ANDRES, 2005, p.135, tradu onossa). Entretanto, utiliza um conjunto de pr ticas completamente diferente daquelas sugeridas por Taylor. Ela procura eliminar esfor os desnecess rios em cada passo de fabrica o de seus autom veis, na cren a de que eliminando desperd cios se consegue avan ar mais rapidamente. A produ o enxuta mencionada nesta obra por conter princ pios que est o na base dos processos geis de desenvolvimento de software como o Extreme Programming. Ela caracterizada por um conjunto de sete princ pios b sicos (POPPENDIECK & POPPENDIECK, 2003): 1. Eliminar desperd cios; 2. Amplificar o aprendizado; 3. Adiar decis es ao m ximo; 4. Entregar o mais rapidamente poss vel; 5. Delegar poder equipe; 6. Incorporar integridade e 7. Ver o todo. Estes princ pios incorporam os fatores citados anteriormente sobre a produtividade do trabalhador do conhecimento. Por esta raz o, existe uma chance de 40 que processos de desenvolvimento de software baseado nos mesmos possam efetivamente elevar a produtividade e a qualidade dos projetos de desenvolvimento. 4.3.1 Eliminar desperd cios Ao analisar a produtividade do trabalhador manual, Taylor buscou formas de eliminar desperd cios e, portanto, obter maior produtividade. A forma utilizada por ele foi avaliar o modo de trabalho dos oper rios e lhes ensinar a melhor forma de executar as tarefas. Esse modelo funcionou e ao adot -lo a Ford elevou tanto a sua produtividade que praticamente levou fal ncia todas as f bricas artesanais de autom veis que existiam na poca (em torno de quinhentas) (POPPENDIECK & POPPENDIECK, 2003). O Sistema de Produ o da Toyota, por sua vez, tamb m priorizou a redu o de desperd cios, por m adotou estrat gias diferentes. Ela procurou colocar o cliente final no centro do problema e analisar toda a cadeia produtiva desde o momento em que o autom vel come ava a ser produzido at o momento de ser entregue ao cliente. Observando a cadeia, procurou identificar tudo aquilo que era feito e que n o gerava resultados percept veis para o cliente final. Se alguma coisa assim fosse identificada, seria considerada um desperd cio e, portanto, eliminada. A nfase foi em tentar reduzir, tanto quanto poss vel, a quantidade de trabalho executada e os subprodutos envolvidos, de modo a concentrar esfor os exclusivamente naquilo que pudesse gerar um resultado objetivo e percept vel para o cliente final. Desperd cio tudo aquilo que n o adiciona valor ao produto, valor tal como percebido pelo cliente. (...) Se um componente est colocado em uma estante pegando poeira, isso desperd cio. Se um ciclo de desenvolvimento coletou requisitos em um livro que est pegando poeira, isso desperd cio. Se uma planta industrial produz mais coisas do que imediatamente necess rio, isso desperd cio. Se os desenvolvedores codificam mais funcionalidades que o imediatamente necess rio, isso desperd cio, transferir o desenvolvimento de um 41 grupo para outro desperd cio. O ideal descobrir o que o cliente deseja e ent o fazer ou desenvolver isso e entregar exatamente o que ele quer, virtualmente de imediato. O que quer que atrapalhe a r pida satisfa o da necessidade do cliente um desperd cio (POPPENDIECK & POPPENDIECK, 2003, p.xxv, tradu o nossa). O Sistema de Produ o da Toyota tamb m busca eliminar desperd cios fazendo com que o estoque seja m nimo, ou simplesmente inexistente, e as entregas sejam efetuadas com a maior velocidade poss vel. O objetivo disso receber feedback rapidamente sobre o produto produzido. Acredita-se que quanto mais curto for o ciclo de feedback, maior ser o aprendizado e mais chances existir o para aprimorar o produto e o processo de produ o. Al m disso, eventuais falhas poder o ser descobertas cedo, facilitando a corre o e tornando-as menos custosas. Portanto, toda a produ o organizada em torno da id ia de aprendizado, melhoria cont nua e detec o r pida de falhas. 4.3.2 Amplificar o aprendizado Ao contr rio da abordagem adotada por Taylor, a Toyota partiu da premissa de que a melhor forma de se executar um trabalho n o est tica, mas sim din mica. Sendo assim, busca fazer com que os oper rios aprendam cada vez mais, se tornem cada vez mais habilidosos e, portanto, capazes de criar formas inovadoras e mais eficazes de realizar suas tarefas medida que ganhem mais experi ncia e conhecimento. Al m disso, acredita que ningu m tem mais informa es para aprimorar o trabalho do ch o de f brica quanto as pessoas que est o l executando o trabalho. Ao fazer isso, a Toyota se afasta da id ia da separa o entre planejamento e execu o que faz parte do modelo Taylorista. Na Toyota, o oper rio respons vel por planejar, executar e aprimorar continuamente a forma de fazer ambas as coisas. O supervisor deixa de ser respons vel pelo planejamento centralizado e assume o papel de 42 treinador. Ele busca assegurar que a equipe tenha o aprendizado mais rico poss vel ao longo do trabalho (POPPENDIECK & POPPENDIECK, 2003). Desenvolver como criar uma receita, enquanto produzir como preparar o prato. Receitas s o criadas por chefs experientes que desenvolveram o instinto para o que funciona e a capacidade de adaptar os ingredientes dispon veis conforme a ocasi o. Ainda assim, at mesmo os grandes chefs produzem in meras varia es de um novo prato medida que iteram na dire o da receita que ter um excelente sabor e ser f cil de reproduzir. N o se espera que os chefs atinjam a receita perfeita na primeira tentativa; espera-se que eles produzam diversas varia es sobre o mesmo tema como parte natural do processo de aprendizagem (POPPENDIECK & POPPENDIECK, 2003, p.xxv, tradu o nossa). Visto que o desenvolvimento de software envolve experimenta o e aprimoramento, a id ia de amplificar o conhecimento bastante relevante. Existe ainda o desafio adicional de que equipes de desenvolvimento costumam ser numerosas e os resultados bem mais complexos do que receitas. Al m disso, a r pida evolu o tecnol gica torna ainda mais essencial a ado o de formas de se amplificar o conhecimento em um projeto de software. 4.3.3 Adiar decis es ao m ximo Ao se projetar um novo produto, tal como um software, existem decis es que podem ser afetadas por mudan as que venham a ocorrer ao longo do projeto. Por exemplo, mudan as ocorridas na economia ou de regras legislativas podem resultar na necessidade de mudan as em um projeto de software que vinha sendo conduzido dentro de uma institui o banc ria. O desenvolvimento de software tradicionalmente afetado por diversas mudan as ao longo dos projetos. O Sistema de Produ o da Toyota trabalha com o princ pio de adiar decis es at o ltimo momento respons vel, ou seja, aquele a partir do qual a n o tomada da decis o traria preju zos diretos ao projeto. O objetivo aguardar at que informa es mais 43 concretas estejam dispon veis para a equipe. Desta forma, procura-se reduzir a necessidade de re-trabalho em fun o de decis es tomadas cedo demais e que mais tarde possam ser for adas a mudar em fun o de mudan as nas circunst ncias (POPPENDIECK & POPPENDIECK, 2003). Pr ticas de desenvolvimento que permitam adiar a tomada de decis es s o eficazes em dom nios que envolvem incerteza, porque elas prov m uma abordagem baseada em op es. Diante de incertezas, a maioria dos mercados econ micos desenvolve op es para prover uma forma de o investidor evitar se trancar em decis es at que o futuro esteja mais perto e mais f cil de prever. Adiar decis es valioso porque poss vel tomar melhores decis es quando elas s o baseadas em fatos e n o especula es. Em um mercado em evolu o, manter decis es de design em aberto mais valioso que se comprometer cedo demais. Uma estrat gia chave para adiar compromissos durante o desenvolvimento de um sistema complexo incorporar a capacidade de mudan a no pr prio sistema (POPPENDIECK & POPPENDIECK, 2003, p.xxvi, tradu o nossa) O ExtremeProgramming trabalha com este conceito evitando a implementa o de funcionalidades baseadas em especula es. Al m disso, usa o desenvolvimento iterativo para assegurar que a equipe se concentre apenas em um conjunto reduzido de funcionalidades a cada itera o, deixando que o tempo traga maiores informa es sobre as funcionalidades futuras. 4.3.4 Entregar o mais rapidamente poss vel Feedback um conceito chave na filosofia just-in-time, porque quanto mais rico e mais r pido for o feedback, maior ser o aprendizado. Quando uma equipe capaz de fazer entregas r pidas, mesmo que cada uma se refira apenas a um conjunto reduzido de funcionalidades, poss vel aprender e aprimorar o que est sendo produzido, bem como a forma de produ o. No desenvolvimento, o ciclo de descoberta cr tico para o aprendizado: fa a o design, implemente, obtenha feedback, melhore. Quanto mais curtos s o estes ciclos, mais se pode aprender. A velocidade assegura que os clientes obtenham o que desejam agora e 44 n o aquilo que eles precisavam ontem. Isso tamb m permite que eles adiem a tomada de decis es sobre o que eles realmente querem at que eles saibam mais (POPPENDIECK & POPPENDIECK, 2003, p.xxvi, tradu o nossa). dif cil adiar decis es quando as entregas demoram demais a ocorrer. Se uma equipe de desenvolvimento s capaz de efetuar entregas a cada seis meses, uma vez que se defina o escopo de um per odo de seis meses de trabalho, o cliente pode vir a ter que aguardar no m nimo seis meses antes de ver qualquer mudan a de id ia ser colocada em pr tica. Por outro lado, se a equipe faz entregas a cada duas semanas, mudan as de rumo podem ser incorporadas mais rapidamente, o que permite adiar decis es sem que isso gere conseq ncias indesej veis (POPPENDIECK & POPPENDIECK, 2003). 4.3.5 Delegar poder e uipe Como pudemos observar anteriormente, importante que o trabalhador do conhecimento possa definir a forma de executar suas tarefas. Ou seja, essencial que ele tenha o dom nio sobre o processo de desenvolvimento e, portanto, tenha a oportunidade de aprimor -lo ao longo do tempo com o objetivo de obter a melhor qualidade poss vel. Executar atividades com a m xima qualidade depende de obter os detalhes corretamente e ningu m entende melhor dos detalhes que as pessoas que efetivamente executam o trabalho. Envolver desenvolvedores nos detalhes das decis es t cnicas fundamental para alcan ar a excel ncia. As pessoas na linha de frente combinam o conhecimento do detalhe do ltimo minuto com o poder de muitas mentes. Quando equipados com a qualifica o t cnica necess ria e guiados por um l der, eles tomar o melhores decis es t cnicas e melhores decis es de processo que qualquer um possa tomar por eles. Pelo fato de as decis es serem adiadas e a execu o ser r pida, n o poss vel para uma autoridade central orquestrar as atividades dos trabalhadores (POPPENDIECK & POPPENDIECK, 2003, p.xxvi, tradu o nossa). 45 Este mais um princ pio no qual a produ o enxuta se afasta da id ia de divis o entre planejamento e execu o. Ao inv s disso, procura-se assegurar que o conhecimento gerado no ch o de f brica circule da melhor maneira poss vel, se enrique a e retorne para o ch o de f brica rapidamente na forma de melhorias no processo. 4.3.6 Incorporar integridade Outra forma de reduzir desperd cios assegurar que o produto tenha elevada integridade percept vel e conceitual. A integridade percept vel alcan ada quando um usu rio pensa Isso exatamente o que eu quero. Algu m entrou na minha cabe a (POPPENDIECK & POPPENDIECK, 2003, p.xxvii, tradu o nossa). Ou seja, quando o software possui uma interface intuitiva e f cil de utilizar, cujos conceitos se relacionam de maneira harm nica. Tal n vel de integridade importante para reduzir desperd cios na medida em que reduz ou elimina poss veis chamados dos usu rios contendo d vidas ou reclama es. Al m disso, eleva a satisfa o do usu rio final. A integridade conceitual, por sua vez, significa que os conceitos centrais do sistema trabalham em conjunto como um todo harm nico e coeso; e um fator cr tico para a cria o da percep o de integridade (POPPENDIECK & POPPENDIECK, 2003, p.xxvii, tradu o nossa). Em outras palavras, a partes se encaixam de maneira coerente, tornando f cil re-conectar os componentes e reduzindo as chances de defeitos. Ambos s o fatores que geram redu o de desperd cios. . Software ntegro possui uma arquitetura coerente, alcan a uma pontua o elevada em usabilidade e adequa o ao prop sito e manuten vel, adapt vel e extens vel. Pesquisas revelam que a integridade deriva de lideran a s bia, qualifica o significativa, comunica o eficaz e disciplina sadia; processos, procedimentos e 46 medi es n o s o substitutos adequados (POPPENDIECK & POPPENDIECK, 2003, p.xxvii, tradu o nossa). Os demais princ pios s o essenciais para se alcan ar integridade, na medida em que ajudam a reduzir os ciclos de feedback e, portanto, procuram amplificar o aprendizado. 4.3.7 Ver o todo Para que um software alcance integridade percept vel e conceitual, importante que o todo seja harm nico. Portanto, n o desej vel que um determinado aspecto do projeto seja extremamente otimizado, enquanto outros tenham comportamentos deficientes. Para atingir integridade, o equil brio mais importante que o comportamento individual das partes envolvidas. necess rio que a equipe de desenvolvimento seja capaz de ter a vis o do todo permanentemente. Integridade em sistemas complexos requer profunda qualifica o em muitas reas diferentes. Um dos problemas mais intrat veis no desenvolvimento de produtos que especialistas em qualquer rea (banco de dados ou interface gr fica, por exemplo) t m a tend ncia de maximizar o desempenho de uma parte do produto representando a sua pr pria especialidade ao inv s de focar no desempenho geral do sistema. Com bastante freq ncia, o bem comum acaba sofrendo se as pessoas se comprometem primariamente com seus pr prios interesses especializados. Quando indiv duos ou organiza es s o medidos de acordo com suas contribui es especializadas, ao inv s do desempenho geral, prov vel que ocorra sub-otimiza o (POPPENDIECK & POPPENDIECK, 2003, p.xxvii, tradu o nossa). Para solucionar os problemas de sub-otimiza o equipes just-in-time procuram elevar o n vel das medi es. Procura-se medir o resultado final e n o as partes individuais, ou seja a aten o voltada para o equil brio do conjunto. Al m disso, utilizam-se os demais princ pios para estabelecer um fluxo de comunica o rico que ajude a equipe a ter a vis o do todo (POPPENDIECK & POPPENDIECK, 2003). 47 4.4 Processos de desenvolvimento de software Como vimos no segundo cap tulo, o termo crise do software acompanha a ind stria de software desde 1968, quando ocorreu a confer ncia da OTAN que cunhou o nome Engenharia de Software. O termo Engenharia de Software, deu origem a uma disciplina dentro da rea de computa o, embora originalmente tivesse sido criado apenas como uma provoca o, conforme os relatos de Peter Naur e Brian Randell. O termo engenharia de software foi escolhido deliberadamente para ser provocativo, cuja implica o era a necessidade de que a manufatura de software fosse baseada nos tipos de fundamentos te ricos e disciplinas pr ticas que s o tradicionais em ramos estabelecidos da engenharia (MCBREEN, 2002, p.xv, tradu o nossa). A Engenharia de Software surgiu com o objetivo de atender s necessidades da OTAN para o desenvolvimento de grandes sistemas de defesa. Em princ pio, seu escopo n o envolvia projetos de aplica es comerciais que, de um modo geral, s o bem menores e precisam entrar em produ o em pouco tempo. Nestes casos, s o raros os projetos desenvolvidos por equipes de mais de 20 pessoas e a maioria dos desenvolvedores trabalha em equipes com menos de 10 membros (MCBREEN, 2002, p.xvi, tradu o nossa). Segundoo IEEE Standard Computer Dictionary, a engenharia de software a aplica o de uma abordagem sistem tica, disciplinada e mensur vel para desenvolvimento, opera o e manuten o de software; isto , a aplica o da engenharia ao software (MCBREEN, 2002, p.7, tradu o nossa). O objetivo desta abordagem alcan ar na rea de software o mesmo n vel de previsibilidade, determinismo e acerto presente em outros ramos da engenharia. A Engenharia de Software deu origem a diversos processos de desenvolvimento. O mais conhecido e antigo deles o processo linear e seq encial de desenvolvimento, 48 tamb m conhecido como cascata. Ele organiza os projetos de software em quatro grandes etapas realizadas seq encialmente: an lise, design, codifica o e testes. Ainda hoje, este o modelo de desenvolvimento mais conhecido e amplamente utilizado (PRESSMAN, 1997). Ele pode ser relacionado facilmente aos princ pios da produ o em massa utilizados por Taylor. A evolu o seq encial do projeto se assemelha a uma f brica onde requisitos s o tratados como mat rias primas que s o transformadas medida que avan am pela linha de produ o. Cada transforma o gera um conjunto de artefatos a serem utilizados em etapas posteriores da fabrica o. Procura-se assegurar que cada artefato seja produzido corretamente para que o resultado final possa ser alcan ado com a mesma previsibilidade e determinismo de uma f brica. Portanto, evitar varia es fundamental. Dentro do projeto, grande parte dos artefatos representada por documentos criados para direcionar o trabalho que ser executado mais adiante na cadeia de produ o, os quais s o produzidos por profissionais especializados. Normalmente o processo de planejamento feito no in cio da cadeia, enquanto espera-se que os artefatos produzidos ao longo do projeto permitam que as ltimas etapas da cadeia sejam produzidas de forma cada vez mais mec nica e determin stica. Portanto, observam-se dois princ pios fundamentais da racionaliza o do trabalho manual: a especializa o e a centraliza o. Durante um projeto, tr s habilidades diferentes s o necess rias: Analistas para documentar os requisitos; Projetistas para criar a especifica o do design e Programadores para escrever o c digo. A cada etapa, os autores de cada documento t m que adicionar detalhes extras porque n o sabem quem ir ler o documento mais adiante. Sem saber que tipo de conhecimento em comum pode ser assumido, a nica coisa segura a fazer adicionar o m ximo de detalhes e refer ncias cruzadas que o autor conhe a. Os revisores 49 precisam, ent o, analisar o documento para confirmar que ele esteja completo e sem ambig idades. Documenta o completa gera outro desafio: os membros da equipe precisam assegurar que os documentos permane am consistentes quando ocorrem mudan as nos requisitos ou mudan as de design feitas durante a codifica o. (...) Como as mudan as se tornam muito caras devido necessidade de atualiza o dos documentos, acabam sendo controladas e evitadas (MCBREEN, 2002, p.6, tradu o nossa). A utiliza o de um processo seq encial, baseado na cria o de artefatos, uma tentativa de disciplinar o desenvolvimento e buscar os n veis de previsibilidade desejados. Entretanto, freq entemente o resultado obtido apenas formalismo e n o disciplina. Em parte isso ocorre porque como j vimos, mudan as s o constantes em projetos de software e o modelo seq encial de desenvolvimento gera uma necessidade de control -las, o que, por sua vez, leva a um conflito de interesses entre clientes e equipes de desenvolvimento. Al m disso, esse modelo revela poucas chances para a aquisi o e utiliza o de feedback ao longo do desenvolvimento, elevando os riscos de que o projeto entregue algo que n o resolva as necessidades dos usu rios, mesmo seguindo um planejamento e controlando o processo. DeMarco (DEMARCO & BOEHM, 2002) acredita que o foco na gera o de artefatos, ao inv s de ajudar, acabou se tornando uma forma de agravar os problemas da crise do software . Segundo ele, Depois de quase 20 anos de obsess o por processos (...), o processo que encontro tipicamente em empresas clientes se tornou excessivamente baseado em documenta es, gerando a enxurrada de documentos que se tornou end mica (...). Ao longo do tempo, a ind stria de software criou alternativas para o processo de desenvolvimento em cascata. Algumas mantiveram parte das caracter sticas do modelo seq encial, enquanto outras se baseiam em formas completamente diferentes de se tratar os projetos de software. 50 O Rational Unified Process (RUP), por exemplo, traz avan os em rela o ao desenvolvimento em cascata, embora mantenha conceitos herdados do taylorismo. Ele um framework de processo bastante abrangente que, como tal, pode ser instanciado para atender s necessidades dos mais diversos tipos de projetos de software (JACOBSON, BOOCH et al., 1999). O RUP organizado em torno do conceito de melhores pr ticas . Ele prov um vasto arcabou o de pr ticas que procuram indicar a melhor forma de se realizar diversos tipos de atividades nos projetos de software. Neste sentido, ele se aproxima da abordagem taylorista que tamb m buscava identificar as melhores formas de estruturar o trabalho dentro de uma f brica. A proposta que, ao iniciar um projeto que utilizar o RUP, a equipe de desenvolvimento selecione dentre as melhores pr ticas dispon veis no arcabou o, aquelas que fazem sentido para o projeto em quest o. Embora seja uma proposta intuitivamente justific vel e louv vel, existem alguns problemas pr ticos que foram levantados por Boehm e Turner ((2003). Em seu arcabou o, o RUP engloba tamb m um vasto conjunto de artefatos, al m de melhores pr ticas . Determinar que pr ticas e artefatos devem ser adotados em um projeto uma atividade que pode ser bem feita por pessoas com treinamento, conhecimento e experi ncia no RUP. Entretanto, raro encontrar pessoas com essas caracter sticas nos projetos de software. Na falta delas, os membros das equipes de projeto tendem a adotar um conjunto desnecessariamente abrangente de pr ticas e artefatos temendo retirar elementos que possam fazer falta mais tarde, o que freq entemente leva burocratiza o dos projetos. 51 N o objetivo do RUP tornar os projetos pesados e enfadonhos , entretanto, o que Boehm e Turner observam que abordagens baseadas em boas pr ticas como o RUP (entre outras), freq entemente levam os projetos a se burocratizarem devido forma como os membros da equipe adotam os conceitos. O desconhecimento e a inexperi ncia normalmente se tornam um convite para o excesso, embora este n o seja o objetivo destes tipos de processos. Outra quest o contradit ria na id ia de melhores pr ticas est no fato de que n o existem melhores pr ticas em absoluto. A avalia o do que vem a ser uma melhor pr tica normalmente precisa levar em conta o contexto em que a pr tica utilizada. Pois, enquanto em determinados casos a pr tica pode se mostrar perfeita, em outros, pode se revelar desastrosa devido a caracter sticas do projeto. Al m de se basear em um conjunto de boas pr ticas, o RUP orientado a casos de uso, centrado na arquitetura, iterativo e incremental (JACOBSON, BOOCH et al., 1999). Os casos de uso s o utilizados pelas equipes para capturar os requisitos funcionais e indicar que atores utilizar o as funcionalidades implementadas. Muitas equipes encaram os casos de uso como o mecanismo essencial para o levantamento dos requisitos, o que problem tico, porque significa que freq entemente os casos de uso ser o interpretados como elementos completos e suficientes para a implementa o das funcionalidades. Basear a compreens o dos requisitos em canais de comunica o escritos problem tico, conforme veremos no pr ximo cap tulo. Ao ser centrado na arquitetura, o RUP tamb m incentiva (direta ou indiretamente) as equipes a estabelecerem a arquitetura dosoftware antes de come ar a implementa o do mesmo. Portanto, a utiliza o de casos de uso para os requisitos e a elabora o de documentos que descrevem a arquitetura antes da implementa o 52 freq entemente levam equipes a adotarem um modelo de desenvolvimento bastante semelhando ao cascata, embora exista uma diferen a fundamental na proposta do RUP: o desenvolvimento iterativo e incremental. Em princ pio, o RUP estabelece o desenvolvimento iterativo e incremental como forma de incorporar feedback e aprendizado ao processo de desenvolvimento. Entretanto, comum equipes adotarem o RUP com itera es muito longas ou simplesmente executarem o projeto inteiro em uma nica itera o. Nestes casos, o que se observa a equipe executando um projeto de acordo com o processo em cascata, mas basicamente usando os artefatos do RUP para organizar a documenta o. Uma das maiores falhas do processo de desenvolvimento em cascata e de outras propostas de desenvolvimento baseadas em princ pios tayloristas a incapacidade de levar em conta o fator humano de forma apropriada. Como vimos anteriormente, Taylor tornou produtivo o trabalho manual, mas seus princ pios n o s o aplic veis para o trabalho do conhecimento, em especial o desenvolvimento de software. Um bom software n o se origina de ferramentas CASE, programa o visual, prototipagem r pida ou tecnologia de objetos. Um bom software resultado de pessoas. Assim como o caso de softwares ruins. (...) j que software criado por pessoas e usado por pessoas, uma melhor compreens o das pessoas como executam o trabalho e como trabalham em conjunto a base para um melhor desenvolvimento de software e para criarmos softwares melhores (CONSTANTINE, 2001, p.xvii, tradu o nossa). Na d cada de 1990, alguns profissionais da ind stria de software come aram a propor novos processos de desenvolvimento que fossem mais adequados para lidar com os aspectos humanos dos projetos de software. Em fevereiro de 2001, 17 profissionais experientes se reuniram em Utah (EUA) para discutir suas pr ticas de desenvolvimento e suas propostas alternativas para evitar os processos de desenvolvimento excessivamente baseados em documenta es e formalismos. Naquele momento, 53 decidiram organizar suas propostas sob um nome comum: desenvolvimento gil de software. Isto foi feito pelo lan amento do Manifesto pelo Desenvolvimento gil de Software3. O manifesto estabelece um conjunto de valores que s o adotados nos projetos geis: Indiv duos e intera es ao inv s de processos e ferramentas; Software funcionando ao inv s de documenta o abrangente; Colabora o com o cliente ao inv s de negocia o de contratos e Responder a mudan as ao inv s de seguir um plano. A proposta que, embora exista valor nos itens direita, os processos geis valorizam mais os itens que est o esquerda. Atualmente, estes s o os principais processos geis conhecidos: Scrum, Dynamic Systems Development Method (DSDM), Crystal Methods, Feature-Driven Development (FDD), Lean Development (LD), Extreme Programming e Adaptative Software Development (HIGHSMITH, 2002). Uma das principais diferen as dos processos geis em rela o aos seus antecessores o conceito chamado de barely sufficient, ou seja, m nimo necess rio. Enquanto abordagens como o RUP (entre outras) procuram estabelecer um arcabou o de melhores pr ticas , os processos geis sugerem o uso de um conjunto bastante reduzido de pr ticas. Tal conjunto pode se revelar suficiente em muitos projetos comerciais que envolvam equipes reduzidas, tais como os que foram mencionados no in cio desta se o. O objetivo come ar os projetos de software de forma simples, com poucas pr ticas e avaliar os resultados. Caso pr ticas ou artefatos faltem ao projeto, deve-se 3 http://www.agilemanifesto.org. 54 busc -los em outras propostas metodol gicas. Com isso, procura-se evitar as chances de que um projeto seja iniciado com um conjunto desnecessariamente elevado de pr ticas e artefatos que possam torn -lo burocr tico. A nfase passa a ser de s trazer elementos novos para o projeto quanto os mesmos realmente se mostram necess rios (BOEHM & TURNER, 2003; COCKBURN, 2002; HIGHSMITH, 2002). O pr ximo cap tulo apresentar o Extreme Programming que representa um dos processos geis mais conhecidos e utilizados.
Compartilhar