Vous êtes sur la page 1sur 39

Primeiros Elogios a Use a Cabea Desenvolvimento de Software

Use a Cabea Desenvolvimento de Software uma srie de diagramas informativos e ilustraes inteligentes
extravagante, mas muito bem planejada, projetada para transmitir informaes de maneira precisa e clara
diretamente para SEU crebro. um tipo de livro totalmente novo.
- Scott Hanselman
Desenvolvedor de Softwares, Orador, Autor de
Scott Hanselmans Computer Zen (A filosofia zen de Scott Hanselman para computadores).

Este um daqueles livros que desenvolvedores experientes gostariam de ter quando comearam. Sei disso, sou
um deles.
- Burk Hufnagel, Desenvolvedor de Softwares Snior

Poderia ter evitado muitos problemas se tivesse lido este livro antes de meu ltimo projeto!
- Essa desenvolvedora pediu para manter-se annima, para que o gerente de seu ltimo
projeto no ficasse preocupado!

Use a Cabea Desenvolvimento de Software ensina muitas lies valiosas que ajudaro qualquer pessoa a distribuir
softwares de qualidade a tempo e dentro do oramento. Seguir os princpios bsicos ensinados neste livro ajudar
a manter seu projeto sob controle do incio ao fim. Independente de h quanto tempo voc vem desenvolvendo
softwares, Use a Cabea Desenvolvimento de Software lhe dar ferramentas essenciais para o desenvolvimento de
projetos bem-sucedidos do incio ao fim.
- Adam Z. Szymanski, Gerente de Projetos de Software, Laboratrio de Pesquisa Naval

As idias 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 introduo ao
gerenciamento de uma equipe de desenvolvimento desde os requisitos at a distribuio.
- McClellan Francis, Engenheiro de Software

i
Elogios a Use a Cabea Anlise e Projeto Orientado a Objeto

Use a Cabea Anlise & Projeto Orientado ao Objeto uma abordagem inovadora da A&POO (Anlise & Projeto Orientado
ao Objeto). O que torna este livro diferente seu enfoque no aprendizado. H livros demais no mercado que desperdiam
muito tempo explicando razes, mas no habilitam realmente o praticante para comear a trabalhar em um projeto. Estes
livros so muito interessantes, mas no so to prticos. Tenho certeza de que o futuro da prtica de desenvolvimento
de softwares ter como enfoque o executor. Os autores tornaram o contedo sobre A&POO acessvel e utilizvel para o
praticante.
- Ivar Jacobson, Consultoria Ivar Jacobson

Acabei de ler UC A&POO e adorei! O livro consegue percorrer os aspectos essenciais da anlise e projeto
orientados a objetos com UML e casos de uso, e at mesmo com vrias aulas sobre um bom projeto de software,
tudo de uma maneira veloz e fcil de aprender. O que mais gostei neste livro foi seu enfoque nas razes 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 so programadores de Java h algum tempo, mas ficam
assustados com os grossos livros sobre Anlise e Projeto OO.
- Kyle Brown, Famoso Engenheiro, IBM

Finalmente um livro sobre A&POO que reconhece que a UML apenas uma notao 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 redao interessante, visualmente orientado da srie Use a
Cabea. Mas por trs das figuras divertidas e das fontes extravagantes temos uma apresentao sria, inteligente e
extremamente bem-elaborada da Anlise e Projeto OO. Este livro apresenta uma opinio slida de como projetar
programas e a comunica efetivamente. Adoro a maneira como ele usa exemplos em andamento para conduzir o
leitor pelos diversos estgios 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 questes so importantes em cada etapa e por qu.
- Edward Sciore, Professor Associado, Departamento de Cincia da Computao,
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 contedo flui facilmente da aplicao de casos de uso para a
coleta de requisitos anlise, projeto, implementao, teste e iterao. Cada etapa do desenvolvimento de softwares
orientados a objetos apresentada luz de slidos princpios de engenharia de softwares. Os exemplos so claros e
ilustrativos. Trata-se de um livro consistente e inovador sobre desenvolvimento de softwares orientados a objetos.
- Dung Zung Nguyen, Orador,
Rice University

ii
Elogios a Use a Cabea Padres de Projetos

Recebi o livro ontem e comecei a ler no caminho para casa... e no consegui parar. Levei para a academia e acho que as
pessoas me viram rindo bastante enquanto me exercitava e lia. Realmente muito arrojado. Alm de divertido, os autores
abordam muitos assuntos e vo direto ao ponto. Fiquei realmente impressionado.
- Erich Gamma, engenheiro de renome da IBM
e co-autor de Padres de Projetos

Use a Cabea Padres de Projeto consegue combinar diverso, gargalhadas, discernimento, profundidade
tcnica e timos conselhos prticos em uma leitura interessante e contemplativa. Sendo iniciante em padres de
projeto, ou se j os usa h anos, certamente voc vai trazer algo de sua visita a Objectville.
- Richard Helm, co-autor de Padres 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 cabea.
- Ward Cunningham, inventor do Wiki e fundador do Hillside Group

Este livro chega perto da perfeio, pela maneira como combina percia 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 indispensvel.
(Colocaria cerca de 10 livros nessa categoria).
- David Gelernter, Professor de Cincia da Computao, Universidade de Yale, e Autor de
Mirror Worlds (Mundos Espelhados) e Machine Beauty (A Beleza das Mquinas)

Um mergulho de cabea no universo dos padres, um espao em que coisas complexas passam a ser simples,
mas coisas simples tambm passam a ser complexas. No consigo pensar em guias tursticos 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 reao foi rolar no cho de rir. Aps me recompor, percebi que alm do livro ser tecnicamente
apurado, a introduo aos padres de projeto mais fcil de entender que j vi.
- Dr. Timothy A. Budd, Professor Associado de Cincia da Computao na Universidade do
Estado do Oregon e autor de vrios livros, inclusive C++ for Java Programmers (C++ para
Programadores de Java)

Jerry Rice percorre padres melhor do que qualquer recebedor da NFL, mas os Freeman o venceram. srio...
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 OReilly

iii
Outros livros da srie Use a Cabea da OReilly
Use a Cabea Java
Use a Cabea Anlise e Projeto Orientado a Objeto (A&POO)
Use a Cabea Ajax (Iniciao rpida)
Use a Cabea HTML com CSS & XHTML
Use a Cabea Padres de Projetos
Use a Cabea Servlets & JSP
Use a Cabea EJB
Use a Cabea PMP
Use a Cabea SQL
Use a Cabea JavaScript

iv
A todos que trabalham em algum projeto conosco e nos
apontaram onde erramos, onde acertamos e que livros ler... aqui
est nossa retribuio.

vii
sumrio

Contedo (Sumrio)
Introduo 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 usurio e tarefas: Dando nfase ao trabalho 93
5 um projeto satisfatrio: Colocando em prtica um projeto de qualidade 129
6 controle de verses: Desenvolvimento defensivo 151
6.5 construindo seu cdigo: Inserir a tabulao de a no espao b... 183
7 teste e integrao contnua: As coisas do errado 195
8 desenvolvimento baseado em testes: Mantendo seu cdigo coeso 233
9 terminando uma iterao: Est tudo se encaixando... 267
10 a prxima iterao: Se no tiver falhas... aperfeioe assim mesmo 293
11 erros: Eliminando erros como um profissional 321
12 o mundo real: Usando um processo no dia-a-dia 349

Contedo (a coisa real)


Introduo
Seu crebro e o Desenvolvimento de Softwares. Voc est sentado
tentando aprender algo, mas seu crebro continua a lhe dizer que todo esse aprendizado
no tem importncia. Seu crebro est dizendo melhor deixar espao para coisas
mais importantes, como que animais selvagens evitar e se praticar alpinismo pelado
uma m idia. 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-cognio xxix
Veja o que voc pode fazer para seu crebro lhe obedecer xxxi
Leia-me xxxii
A equipe de reviso tcnica xxxiv
Agradecimentos xxxv

ix
sumrio

planejamento do projeto

3
Planejando para o sucesso
Qualquer software de peso comea com um grande plano.
Neste captulo voc vai aprender a criar esse plano. Voc vai aprender a trabalhar com o cliente
para priorizar seus requisitos. Tambm DEFINIR ITERAES que guiaro voc e sua equipe.
Para concluir, criar um plano de desenvolvimento exequvel 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 iteraes 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 UTPICOS... 74
Os desenvolvedores pensam em dias do... 75
Isso o que um programador diz...
Em que momento sua iterao demora demais? 76
Considere a velocidade ANTES de dividir em iteraes 77
Certo, no h problema, posso
fazer isso em dois dias. Hora de fazer uma avaliao 81
Gerenciando clientes irritados 82
A Lousa em sua parede 84

...mas isso o que ele est pensando

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 mame no precisar de mim no jantar.

xii
como usar este livro

Para quem este livro?


Se voc puder responder sim a todas essas perguntas:

1 Tem acesso a um computador e alguma experincia em Usamos Java no livro, mas voc
pode fazer vi
que C#. Porstm,angroosadsaiant
programao?
e fingir
2
vista grossa para fingir queafaPezer
Quer aprender tcnicas para a construo e distribuio de

rl.
softwares de qualidade? Quer entender os princpios existentes
por trs das iteraes e do desenvolvimento baseado em testes?

3 Prefere conversas estimulantes na hora do jantar a palestras


secas, chatas e tcnicas?

este livro para voc.

Quem provavelmente deve ficar longe deste livro?


Se voc puder responder sim a qualquer das perguntas abaixo:

1 Voc totalmente iniciante em Java?


(No preciso ser experiente e se souber C++ ou C# entender
bem os exemplos de cdigo).

2 Voc um gerente de desenvolvimento experiente procurando


um livro de referncia?

3 Tem medo de tentar algo diferente? Prefere fazer um tratamento


de canal a misturar listras e xadrez? Acredita que um livro tcnico
no pode ser srio se as iteraes forem representadas na forma
humana?

este livro no para voc.

[nota do pessoal de marketing: este livro serve


qualquer pessoa que tenha um carto de crdito.]para

xxvi introduo
a introduo

Meta-cognio: entendendo o pensamento.


Se voc quiser realmente aprender, e quiser faz-lo mais rpida e eficientemente,
preste ateno em como sua ateno atrada. Pense em como voc pensa.
Entenda como aprende.
Estou pensando em como
Quase ningum fez cursos de meta-cognio ou teoria do aprendizado quando vou fazer meu crebro
estava crescendo. Esperavam que aprendssemos, mas raramente nos ensinavam a lembrar disso...
aprender.
Mas presumimos que por voc estar segurando este livro, deseja realmente
aprender a desenvolver softwares de qualidade. E provvel que no 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 mximo, ou
qualquer livro ou experincia de aprendizagem, tome as rdeas de seu crebro.
Dedique-se a esse contedo.
O truque fazer seu crebro ver o novo material que voc est aprendendo
como Realmente Importante. Crucial para seu bem-estar. To importante
quanto um tigre. Caso contrrio, voc estar em uma batalha constante, com seu
crebro fazendo o que pode para no deixar o novo contedo ser memorizado.

Mas como fazer seu crebro tratar o desenvolvimento de softwares como


se fosse um tigre faminto?
H a maneira tediosa e lenta ou a mais rpida e efetiva. A maneira lenta por
meio da repetio contnua. claro que voc sabe que pode aprender e lembrar at
o mais chato dos tpicos se continuar insistindo nisso. Com um nvel suficiente
de repetio, seu crebro pensar Isso no parece importante, mas ele continua se
dedicando mesma coisa repetidamente, portanto, suponho que deva ser.
A maneira mais rpida fazer qualquer coisa que aumente a atividade
cerebral, principalmente tipos diferentes de atividade cerebral. Os itens da
pgina anterior so grande parte da soluo e todos comprovadamente ajudaro
seu crebro a trabalhar a seu favor. Por exemplo, estudos mostram que inserir
palavras dentro das figuras que elas descrevem (e no em algum outro local da
pgina, como em uma legenda ou no corpo do texto) far com que seu crebro
tente descobrir como as palavras e a figura esto relacionadas e isso ocasionar
o acionamento de mais neurnios. Maior acionamento de neurnios = mais
chances de seu crebro perceber que isso algo em que vale a pena prestar
ateno e possivelmente memorizar.
O estilo coloquial ajuda porque as pessoas tendem a prestar mais ateno
quando percebem que esto em uma conversa, j que espera-se que elas
acompanhem e exponham sua opinio. O interessante que seu crebro no
est necessariamente preocupado com o fato da conversa ser entre voc e um
livro! Por outro lado, se o estilo da redao for formal e seco, ele perceber
como se voc estivesse assistindo a uma palestra enquanto senta em uma sala
cheia de espectadores passivos. No preciso ficar acordado.
Mas figuras e um estilo coloquial so apenas o comeo...

voc est aqui xxix


como usar este livro

Leia-me
Essa uma experincia de aprendizado e no um livro de consulta. Eliminamos deliberadamente tudo que pudesse
atrapalhar o aprendizado independente do que estivssemos abordando nesse ponto do livro. E na primeira leitura,
voc precisa comear desde o incio, porque o livro faz suposies sobre o que voc j viu e aprendeu.

Presumimos que voc esteja familiarizado com a programao orientada a objetos.


Seria necessrio um livro inteiro para lhe ensinarmos a programao orientada a objetos (como em, digamos, Use
a Cabea A&POO). Preferimos enfocar neste livro os princpios 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 so aplicveis 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 cdigo. Nesse caso altamente
recomendvel que se familiarize com uma dessas linguagens antes de se aventurar por alguns dos ltimos captulos
do livro.

No abordamos todos os processos de desenvolvimento de software existentes.


H livros inteiros sobre diferentes maneiras de criar softwares. No tentamos incluir todas as abordagens
possveis de desenvolvimento de cdigo. Em vez disso, enfocamos tcnicas que sabemos que funcionam e se
complementam na produo de softwares de qualidade. O Captulo 12 especificamente fala sobre maneiras de
adaptar o processo para a manipulao de elementos exclusivos de um projeto.

As atividades NO so opcionais.
Os exerccios e atividades no so complementos; fazem parte do contedo principal do livro. Alguns deles so para
ajudar na memorizao, outros para a compreenso e alguns o ajudaro a aplicar o que voc aprendeu. Alguns so
apenas para faz-lo pensar sobre como resolveria o problema. No salte os exerccios. As palavras-cruzadas so a
nica coisa que voc no precisa fazer, mas so um bom exerccio para dar a seu crebro uma chance de pensar nas
palavras e termos do aprendizado em um contexto diferente.

A redundncia intencional e importante.


Uma diferena que se destaca em um livro Use a Cabea que queremos que voc realmente aprenda. E queremos que
termine o livro lembrando o que aprendeu. A maioria dos livros de referncia no tem a reteno e a lembrana como
objetivos, mas este livro sobre aprendizado, portanto, voc ver alguns dos conceitos aparecem mais de uma vez.

Os exemplos so to simples quanto possvel


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 possvel, para que a
parte que voc estiver tentando aprender se apresente de maneira clara e simples. No espere que todos os exemplos
sejam robustos, ou at mesmo completos eles foram criados especificamente para o aprendizado e nem sempre so
totalmente funcionais.
Inserimos o cdigo 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 exerccios Poder do crebro no tm respostas.


Para alguns deles, no h resposta certa, e em outros, parte da experincia de aprendizado das atividades para voc
decidir se e quando suas respostas esto corretas. Em alguns dos exerccios voc encontrar dicas que o conduziro na
direo correta.

xxxii introduo
desenvolvimento de softwares de qualidade

A maioria dos projetos tem duas preocupaes bsicas


Converse com a maioria dos clientes e, alm de sua grande idia, provavelmente
eles tero duas preocupaes bsicas:

Quanto custar?
Isso no surpresa. A maioria dos clientes quer saber a quantia que eles tero que
gastar. Nesse caso, no entanto, Tom tem bastante dinheiro, logo, esse no um
grande problema para ele.

Geralmente, dinheiro uma limitao.


Nesse caso, Tom
e um oramento dotequm edinelehevairoi prpara gastar
aumentar ainda mais o montanteec. isar vai

Quanto tempo vai demorar?


A outra grande restrio tempo. Quase nenhum cliente diz Demore quanto
quiser!. E quase sempre o cliente quer seu software pronto em uma data ou
evento especfico.
No caso de Tom, ele quer seu site da Web disponvel em trs meses, pronto para a
grande Conferncia TrailMix que est chegando.

A Conferncia
TrailMix

Esse tambm seu di


pagamento.. se termianarde
a tempo.

voc est aqui 37

Vous aimerez peut-être aussi