Baixe o app para aproveitar ainda mais
Prévia do material em texto
i Primeiros Elogios a Use a Cabeça Desenvolvimento de Software “Use a Cabeça Desenvolvimento de Software é uma série de diagramas informativos e ilustrações inteligentes extravagante, mas muito bem planejada, projetada para transmitir informações de maneira precisa e clara diretamente para SEU cérebro. É um tipo de livro totalmente novo”. - Scott Hanselman Desenvolvedor de Softwares, Orador, Autor de Scott Hanselman’s Computer Zen (A filosofia zen de Scott Hanselman para computadores). “Este é um daqueles livros que desenvolvedores experientes gostariam de ter quando começaram. Sei disso, sou um deles”. - Burk Hufnagel, Desenvolvedor de Softwares Sênior “Poderia ter evitado muitos problemas se tivesse lido este livro antes de meu último projeto!” - Essa desenvolvedora pediu para manter-se anônima, para que o gerente de seu último projeto não ficasse preocupado! “Use a Cabeça Desenvolvimento de Software ensina muitas lições valiosas que ajudarão qualquer pessoa a distribuir softwares de qualidade a tempo e dentro do orçamento. Seguir os princípios básicos ensinados neste livro ajudará a manter seu projeto sob controle do início ao fim. Independente de há quanto tempo você vem desenvolvendo softwares, Use a Cabeça Desenvolvimento de Software lhe dará ferramentas essenciais para o desenvolvimento de projetos bem-sucedidos do início ao fim”. - Adam Z. Szymanski, Gerente de Projetos de Software, Laboratório de Pesquisa Naval “As idéias deste livro podem ser usadas por gerentes iniciantes e experientes que quiserem melhorar imediatamente o processo geral de desenvolvimento de softwares”. - Dan Francis, Gerente de Engenharia de Softwares, uma das 50 maiores empresas da Fortune “Uma perspectiva totalmente nova do processo de desenvolvimento de softwares. Uma ótima introdução ao gerenciamento de uma equipe de desenvolvimento desde os requisitos até a distribuição”. - McClellan Francis, Engenheiro de Software ii Elogios a Use a Cabeça – Análise e Projeto Orientado a Objeto “Use a Cabeça Análise & Projeto Orientado ao Objeto é uma abordagem inovadora da A&POO (Análise & Projeto Orientado ao Objeto). O que torna este livro diferente é seu enfoque no aprendizado. Há livros demais no mercado que desperdiçam muito tempo explicando razões, mas não habilitam realmente o praticante para começar a trabalhar em um projeto. Estes livros são muito interessantes, mas não são tão práticos. Tenho certeza de que o futuro da prática de desenvolvimento de softwares terá como enfoque o executor. Os autores tornaram o conteúdo sobre A&POO acessível e utilizável para o praticante”. - Ivar Jacobson, Consultoria Ivar Jacobson “Acabei de ler UC A&POO e adorei! O livro consegue percorrer os aspectos essenciais da análise e projeto orientados a objetos com UML e casos de uso, e até mesmo com várias aulas sobre um bom projeto de software, tudo de uma maneira veloz e fácil de aprender. O que mais gostei neste livro foi seu enfoque nas razões para trabalharmos com a A&POO – criar software de qualidade! Ao definir o que é um software de qualidade e mostrar como cada etapa do processo de A&POO leva a esse objetivo, o livro consegue ensinar até mesmo ao mais antigo programador de Java porque a A&POO é importante. Este é um ótimo “primeiro livro” sobre projeto para qualquer pessoa iniciante em Java, ou até para os que já são programadores de Java há algum tempo, mas ficam assustados com os grossos livros sobre Análise e Projeto OO”. - Kyle Brown, Famoso Engenheiro, IBM “Finalmente um livro sobre A&POO que reconhece que a UML é apenas uma notação e que o que importa no desenvolvimento de softwares é passar algum tempo analisando os problemas”. - Pete McBreen, Autor, Software Craftsmanship (A Arte de Criar Softwares) “O livro faz um bom trabalho ao usar aquele estilo de redação interessante, visualmente orientado da série ‘Use a Cabeça’. Mas por trás das figuras divertidas e das fontes extravagantes temos uma apresentação séria, inteligente e extremamente bem-elaborada da Análise e Projeto OO. Este livro apresenta uma opinião sólida de como projetar programas e a comunica efetivamente. Adoro a maneira como ele usa exemplos em andamento para conduzir o leitor pelos diversos estágios do processo de projetar. Ao ler o livro, me senti como se olhasse sobre os ombros de um projetista experiente que estivesse me explicando que questões são importantes em cada etapa e por quê”. - Edward Sciore, Professor Associado, Departamento de Ciência da Computação, Boston College “Este é um livro bem-projetado que oferece o que promete para seus leitores: como analisar, projetar e criar softwares de qualidade orientados a objetos. Seu conteúdo flui facilmente da aplicação de casos de uso para a coleta de requisitos à análise, projeto, implementação, teste e iteração. Cada etapa do desenvolvimento de softwares orientados a objetos é apresentada à luz de sólidos princípios de engenharia de softwares. Os exemplos são claros e ilustrativos. Trata-se de um livro consistente e inovador sobre desenvolvimento de softwares orientados a objetos”. - Dung Zung Nguyen, Orador, Rice University iii Elogios a Use a Cabeça – Padrões de Projetos “Recebi o livro ontem e comecei a ler no caminho para casa... e não consegui parar. Levei para a academia e acho que as pessoas me viram rindo bastante enquanto me exercitava e lia. Realmente muito ‘arrojado’. Além de divertido, os autores abordam muitos assuntos e vão direto ao ponto. Fiquei realmente impressionado”. - Erich Gamma, engenheiro de renome da IBM e co-autor de Padrões de Projetos “‘Use a Cabeça – Padrões de Projeto’ consegue combinar diversão, gargalhadas, discernimento, profundidade técnica e ótimos conselhos práticos em uma leitura interessante e contemplativa. Sendo iniciante em padrões de projeto, ou se já os usa há anos, certamente você vai trazer algo de sua visita a Objectville”. - Richard Helm, co-autor de Padrões de Projeto com o resto da Gangue dos Quatro – Erich Gamma, Ralph Johnson e John Vlissides “Sinto como se o peso de milhares de livros tivesse sido tirado de minha cabeça”. - Ward Cunningham, inventor do Wiki e fundador do Hillside Group “Este livro chega perto da perfeição, pela maneira como combina perícia e facilidade de leitura. Ele se expressa com autoridade e é de leitura simples. É um dos poucos livros de software que já li que me parece indispensável. (Colocaria cerca de 10 livros nessa categoria)”. - David Gelernter, Professor de Ciência da Computação, Universidade de Yale, e Autor de “Mirror Worlds” (Mundos Espelhados) e “Machine Beauty” (A Beleza das Máquinas) “Um mergulho de cabeça no universo dos padrões, um espaço em que coisas complexas passam a ser simples, mas coisas simples também passam a ser complexas. Não consigo pensar em guias turísticos melhores do que os Freeman”. - Miko Matsumura, Analista Industrial, Ex-Instrutor Chefe de Java da Middleware Company, Sun Microsystems “Ri, chorei, mexeu comigo”. - Daniel Steinberg, Editor-Chefe, java.net “Minha primeira reação foi rolar no chão de rir. Após me recompor, percebi que além do livro ser tecnicamente apurado, é a introdução aos padrões de projeto mais fácil de entender que já vi”. - Dr. Timothy A. Budd, Professor Associado de Ciência da Computação na Universidade do Estado do Oregon e autor de vários livros, inclusive C++ for Java Programmers (C++ para Programadores de Java) “Jerry Rice percorre padrões melhor do que qualquer recebedor da NFL, mas os Freeman o venceram. É sério... este é um dos livros mais divertidos e inteligentes sobre projeto de softwares que já li”. - Aaron LaBerge, VP Technology, ESPN.com Outros livros relacionados da O’Reilly iv Outros livros da série Use a Cabeça da O’Reilly Use a Cabeça Java Use a Cabeça Análise e Projeto Orientado a Objeto (A&POO) Use a Cabeça Ajax(Iniciação rápida) Use a Cabeça HTML com CSS & XHTML Use a Cabeça Padrões de Projetos Use a Cabeça Servlets & JSP Use a Cabeça EJB Use a Cabeça PMP Use a Cabeça SQL Use a Cabeça JavaScript vii A todos que trabalham em algum projeto conosco e nos apontaram onde erramos, onde acertamos e que livros ler... aqui está nossa retribuição. ix Conteúdo (Sumário) Introdução xxv 1 desenvolvimento de softwares de qualidade: Satisfazendo seu cliente 1 2 coletando requisitos: Sabendo o que o cliente quer 25 3 planejamento do projeto: Planejando para o sucesso 57 4 roteiros de usuário e tarefas: Dando ênfase ao trabalho 93 5 um projeto satisfatório: Colocando em prática um projeto de qualidade 129 6 controle de versões: Desenvolvimento defensivo 151 6.5 construindo seu código: Inserir a tabulação de a no espaço b... 183 7 teste e integração contínua: As coisas dão errado 195 8 desenvolvimento baseado em testes: Mantendo seu código coeso 233 9 terminando uma iteração: Está tudo se encaixando... 267 10 a próxima iteração: Se não tiver falhas... aperfeiçoe assim mesmo 293 11 erros: Eliminando erros como um profissional 321 12 o mundo real: Usando um processo no dia-a-dia 349 Conteúdo (a coisa real) Introdução Seu cérebro e o Desenvolvimento de Softwares. Você está sentado tentando aprender algo, mas seu cérebro continua a lhe dizer que todo esse aprendizado não tem importância. Seu cérebro está dizendo “É melhor deixar espaço para coisas mais importantes, como que animais selvagens evitar e se praticar alpinismo pelado é uma má idéia”. Portanto, como fazê-lo achar que sua vida depende do conhecimento de como desenvolver softwares de qualidade? Para quem é este livro? xxvi Sabemos o que você está pensando xxvii Meta-cognição xxix Veja o que você pode fazer para seu cérebro lhe obedecer xxxi Leia-me xxxii A equipe de revisão técnica xxxiv Agradecimentos xxxv sumário xii planejamento do projeto Planejando para o sucesso Qualquer software de peso começa com um grande plano. Neste capítulo você vai aprender a criar esse plano. Você vai aprender a trabalhar com o cliente para priorizar seus requisitos. Também DEFINIRÁ ITERAÇÕES que guiarão você e sua equipe. Para concluir, criará um plano de desenvolvimento exequível que você e sua equipe possam executar e monitorar confiantemente. Ao terminar, saberá exatamente como ir dos requisitos ao marco 1.0. Os clientes querem seu software IMEDIATAMENTE! 58 Priorize com o cliente 60 Sabemos o que encontrar no Marco 1.0 (bem, talvez) 60 Se os recursos forem excessivos, re-priorize 61 Às vezes mais pessoas significam retornos menores 63 Construa seu caminho de modo a chegar a um marco 1.0 sensato 64 As iterações devem ser curtas e simples 70 Comparando seu plano com a realidade 71 A velocidade compensará os excedentes em suas estimativas 73 Os programadores pensam em dias UTÓPICOS... 74 Os desenvolvedores pensam em dias do... 75 Em que momento sua iteração demora demais? 76 Considere a velocidade ANTES de dividir em iterações 77 Hora de fazer uma avaliação 81 Gerenciando clientes irritados 82 A Lousa em sua parede 84 Certo, não há problema, posso fazer isso em dois dias. Eu vou enfrentar uma batalha nessa ida para casa, programar até as 3 da manhã, dar uma paradinha, e voltar a trabalhar. Durmo algumas horas, chamo o pessoal para fazer ajustes comigo e termino à meia-noite. Se nada der errado... e mamãe não precisar de mim no jantar. Isso é o que um programador diz... ...mas é isso o que ele está pensando 3 sumário xxvi como usar este livro Para quem é este livro? Se você puder responder “sim” a todas essas perguntas: Tem acesso a um computador e alguma experiência em programação? Quer aprender técnicas para a construção e distribuição de softwares de qualidade? Quer entender os princípios existentes por trás das iterações e do desenvolvimento baseado em testes? Prefere conversas estimulantes na hora do jantar a palestras secas, chatas e técnicas? este livro é para você. Quem provavelmente deve ficar longe deste livro? Se você puder responder “sim” a qualquer das perguntas abaixo: Você é totalmente iniciante em Java? (Não é preciso ser experiente e se souber C++ ou C# entenderá bem os exemplos de código). Você é um gerente de desenvolvimento experiente procurando um livro de referência? Tem medo de tentar algo diferente? Prefere fazer um tratamento de canal a misturar listras e xadrez? Acredita que um livro técnico não pode ser sério se as iterações forem representadas na forma humana? este livro não é para você. 1 2 3 3 1 2 [nota do pessoal de marketing: este livro serve para qualquer pessoa que tenha um cartão de crédito.] Usamos Java no livro, mas você pode fazer vista grossa e fingir que é C#. Porém, não adianta fazer vista grossa para fingir que é Perl. introdução xxix Meta-cognição: entendendo o pensamento. Se você quiser realmente aprender, e quiser fazê-lo mais rápida e eficientemente, preste atenção em como sua atenção é atraída. Pense em como você pensa. Entenda como aprende. Quase ninguém fez cursos de meta-cognição ou teoria do aprendizado quando estava crescendo. Esperavam que aprendêssemos, mas raramente nos ensinavam a aprender. Mas presumimos que por você estar segurando este livro, deseja realmente aprender a desenvolver softwares de qualidade. E é provável que não queira demorar muito. Se quiser usar o que se encontra neste livro, terá que lembrar o que leu. E para isso, tem que entender. Para aproveitar este livro ao máximo, ou qualquer livro ou experiência de aprendizagem, tome as rédeas de seu cérebro. Dedique-se a esse conteúdo. O truque é fazer seu cérebro ver o novo material que você está aprendendo como Realmente Importante. Crucial para seu bem-estar. Tão importante quantoum tigre. Caso contrário, você estará em uma batalha constante, com seu cérebro fazendo o que pode para não deixar o novo conteúdo ser memorizado. Mas como fazer seu cérebro tratar o desenvolvimento de softwares como se fosse um tigre faminto? Há a maneira tediosa e lenta ou a mais rápida e efetiva. A maneira lenta é por meio da repetição contínua. É claro que você sabe que pode aprender e lembrar até o mais chato dos tópicos se continuar insistindo nisso. Com um nível suficiente de repetição, seu cérebro pensará “Isso não parece importante, mas ele continua se dedicando à mesma coisa repetidamente, portanto, suponho que deva ser”. A maneira mais rápida é fazer qualquer coisa que aumente a atividade cerebral, principalmente tipos diferentes de atividade cerebral. Os itens da página anterior são grande parte da solução e todos comprovadamente ajudarão seu cérebro a trabalhar a seu favor. Por exemplo, estudos mostram que inserir palavras dentro das figuras que elas descrevem (e não em algum outro local da página, como em uma legenda ou no corpo do texto) fará com que seu cérebro tente descobrir como as palavras e a figura estão relacionadas e isso ocasionará o acionamento de mais neurônios. Maior acionamento de neurônios = mais chances de seu cérebro perceber que isso é algo em que vale a pena prestar atenção e possivelmente memorizar. O estilo coloquial ajuda porque as pessoas tendem a prestar mais atenção quando percebem que estão em uma conversa, já que espera-se que elas acompanhem e exponham sua opinião. O interessante é que seu cérebro não está necessariamente preocupado com o fato da “conversa” ser entre você e um livro! Por outro lado, se o estilo da redação for formal e seco, ele perceberá como se você estivesse assistindo a uma palestra enquanto senta em uma sala cheia de espectadores passivos. Não é preciso ficar acordado. Mas figuras e um estilo coloquial são apenas o começo... a introdução Estou pensando em como vou fazer meu cérebro lembrar disso... você está aqui xxxii como usar este livro Leia-me Essa é uma experiência de aprendizado e não um livro de consulta. Eliminamos deliberadamente tudo que pudesse atrapalhar o aprendizado independente do que estivéssemos abordando nesse ponto do livro. E na primeira leitura, você precisa começar desde o início, porque o livro faz suposições sobre o que você já viu e aprendeu. Presumimos que você esteja familiarizado com a programação orientada a objetos. Seria necessário um livro inteiro para lhe ensinarmos a programação orientada a objetos (como em, digamos, Use a Cabeça – A&POO). Preferimos enfocar neste livro os princípios de desenvolvimento de softwares em vez dos fundamentos de projetos ou linguagens. Usamos Java em nossos exemplos porque é uma linguagem muito comum e bem auto-explicativa; mas todos os assuntos sobre os quais falamos são aplicáveis independente de você estar usando Java, C#, C++ ou Visual Basic (ou Ruby, ou...). No entanto, se nunca programou usando uma linguagem orientada a objetos, você pode ter algum problema para seguir partes do código. Nesse caso é altamente recomendável que se familiarize com uma dessas linguagens antes de se aventurar por alguns dos últimos capítulos do livro. Não abordamos todos os processos de desenvolvimento de software existentes. Há livros inteiros sobre diferentes maneiras de criar softwares. Não tentamos incluir todas as abordagens possíveis de desenvolvimento de código. Em vez disso, enfocamos técnicas que sabemos que funcionam e se complementam na produção de softwares de qualidade. O Capítulo 12 especificamente fala sobre maneiras de adaptar o processo para a manipulação de elementos exclusivos de um projeto. As atividades NÃO são opcionais. Os exercícios e atividades não são complementos; fazem parte do conteúdo principal do livro. Alguns deles são para ajudar na memorização, outros para a compreensão e alguns o ajudarão a aplicar o que você aprendeu. Alguns são apenas para fazê-lo pensar sobre como resolveria o problema. Não salte os exercícios. As palavras-cruzadas são a única coisa que você não precisa fazer, mas são um bom exercício para dar a seu cérebro uma chance de pensar nas palavras e termos do aprendizado em um contexto diferente. A redundância é intencional e importante. Uma diferença que se destaca em um livro Use a Cabeça é que queremos que você realmente aprenda. E queremos que termine o livro lembrando o que aprendeu. A maioria dos livros de referência não tem a retenção e a lembrança como objetivos, mas este livro é sobre aprendizado, portanto, você verá alguns dos conceitos aparecem mais de uma vez. Os exemplos são tão simples quanto possível Nossos leitores nos dizem que é frustrante percorrer 200 linhas de um exemplo procurando por duas linhas que eles precisam entender. A maioria dos exemplos deste livro é mostrada dentro do menor contexto possível, para que a parte que você estiver tentando aprender se apresente de maneira clara e simples. Não espere que todos os exemplos sejam robustos, ou até mesmo completos – eles foram criados especificamente para o aprendizado e nem sempre são totalmente funcionais. Inserimos o código completo dos projetos na Web para você poder copiar e colá-los em seu editor de texto. Você os encontrará em: http://www.headfirstlabs.com/books/hfsd/. Os exercícios ‘Poder do cérebro’ não têm respostas. Para alguns deles, não há resposta certa, e em outros, parte da experiência de aprendizado das atividades é para você decidir se e quando suas respostas estão corretas. Em alguns dos exercícios você encontrará dicas que o conduzirão na direção correta. introdução desenvolvimento de softwares de qualidade 37você está aqui A maioria dos projetos tem duas preocupações básicas Converse com a maioria dos clientes e, além de sua grande idéia, provavelmente eles terão duas preocupações básicas: Quanto custará? Isso não é surpresa. A maioria dos clientes quer saber a quantia que eles terão que gastar. Nesse caso, no entanto, Tom tem bastante dinheiro, logo, esse não é um grande problema para ele. Quanto tempo vai demorar? A outra grande restrição é tempo. Quase nenhum cliente diz “Demore quanto quiser!”. E quase sempre o cliente quer seu software pronto em uma data ou evento específico. No caso de Tom, ele quer seu site da Web disponível em três meses, pronto para a grande Conferência TrailMix que está chegando. Geralmente, dinheiro é uma limitação. Nesse caso, Tom tem dinheiro para gastar e um orçamento do que ele vai precisar vai aumentar ainda mais o montante. A Conferência TrailMix Esse também é seu dia depagamento... se terminar a tempo.
Compartilhar