Páginas

Mostrando postagens com marcador xp. Mostrar todas as postagens
Mostrando postagens com marcador xp. Mostrar todas as postagens

12 agosto 2008

Ainda não entendeu o que é desenvolvimento ágil?

Bem... então Capitão Vinícius Nascimento vai ensinar...



Pontos altos da entrevista pra mim:

  • Não adianta... a maior parte das empresas nunca será Ágil (e o problema está nos gestores)
  • Desenvolvimento de Software é diferente de Engenharia civil (nunca canso de repetir isso)
  • Participação do cliente é fundamental!
  • Parece impossível, mas software com qualidade, satisfazendo o cliente e que seja sustentável é possível!!!

17 junho 2008

Projetinho exemplo: Integração Contínua

Saudações!

Como vcs devem saber, hoje tenho uma apresentação sobre Integração Contínua no auditório do EPS às 18:40...

Como forma de ilustrar a minha apresentação, vou disponibilizar um arquivo contendo um projetinho de exemplo - feito no eclipse, óbvio - e que junta ant+junit+mocks+javadoc+findbugs+dbunit+sqlite para apresentar como é possível iniciar um projeto já pensando em qualidade de software.

É um projeto beeeeeem simples, apenas com uma tela de login e uma listagem qualquer... o foco da aplicação é comprovar o conceito que vou descrever hoje... espero vocês por lá!

Download do Arquivo: userAdminIC.tgz

[]s
Victor

18 março 2008

Release Planning


Prática originária do Extreme Programming, ela pode ser bastante útil para a implantação de Scrum em sua empresa, principalmente para as empresas que possuem um cultura mais tradicionalista em gerenciamento de projetos.

Release Planning pode ser definido como: (Fonte)

Criação de um Plano de Projeto baseado nas expectativas do cliente juntamente com o histórico de desenvolvimento do produto. Planejamentos iniciais são necessariamente imprecisos: prioridades nem estimativas são sólidas, e até a equipe iniciar o trabalho não há como saber o quão rápido seguirão. Mesmo o planejamento para o primeiro release não será claro, e continuamente este plano será revisado pela equipe/cliente.

Integrando ao Scrum



Criando Roadmap do Projeto

Scrum é basicamente sobre fatos reais, não contos de fada. Assim, o Product Owner, interpretando o valor de negócio das funcionalidades, forças técnicas e restrições de mercado pode transcrever suas expectativas em um roadmap (Mapa de produto), para que possa preparar-se melhor na evolução do projeto.

Este roadmap será simples. Fornecerá deadlines e a priorização (em nível macro) necessária para criar o Plano de Release.

Meça o presente olhando para o futuro

Steve McConnell (9 Pecados Mortais do Gerenciamento de Projetos) fez uma interessante comparação:
Eu imagino um bom planejamento de projetos como dirigir à noite com as lanternas ligadas. Podem existir mapas que dirão como ir da Cidade A para a Cidade B, mas a distância que posso ver em detalhes através de meus faróis é limitada. Em projetos de médio ou grande porte, planejamento deve ser mapeado fim-a-fim cedo no projeto. Detalhamento e micro planejamento deve geralmente ser conduzido apenas algumas semanas por vez, e deve ser guiado na forma "just in time".


Interpete a citação acima da seguinte forma: Mantenha um pequeno plano sobre três Sprints à frente da atual. Revise este plano a cada Sprint Review para manter nítidas as suas intenções de curto e médio prazos. O product backlog, macro e priorizado por valores de negócio e criticidade, continuará existindo, estou apenas propondo um item a mais na sua incursão no Desenvolvimento Ágil.
Utilize os resultados do Sprint, Retrospectivas e o Sprint Planning para manter-se focado no estado real do projeto para determinar qual caminho seguir.


[]s

15 janeiro 2008

XP funcionaria?



Blz então... postando serio agora..

Saudações!
Na lista de discussão gringa de XP (extremeprogramming) está rolando uma discussão muito interessante sobre a utilização de XP por uma equipe apenas para planejamento. Confesso que achei extremamente interessante. Em seu post inicial Stefan Arentz descreve a utilização principalmente da prática de jogo do planejamento e estimativas... acompanhe o post na íntegra.

Gostaria de chamar a atenção para um reply:

Fonte
John A. Maxwell

> Hmm makes me wonder.. does XP works on a fixed cost project ?

It depends on what you mean by "work". If you mean, will it help you get the most value for the money spent, yes. If you mean, will it let you know as early as possible if you're not gonna meet all of the goals (if that's the case), again, yes.

If you mean, will it cause the impossible to suddenly become possible, no (well, unless it was only very slightly impossible :-). If you mean, will it enable you to delude yourself into thinking you can do too much work in too little time, again, no.

If you mean, will it give you a magic wand, to make the people who want more done than time and resources allow stop being unreasonable... maybe. It depends on whether they're prepared to face reality, and even more importantly, on _how_ they're prepared to face it. Further exposition below. (...)

Yep. Welcome to every fixed price contract I've ever heard of. A news flash, though: most of the time, the people applying the pressure _already_ _know_ they aren't going to get everything they ask for. They just don't know any other way to get as much as possible. The logic is simple (albeit incomplete and incorrect): the harder they push, the harder the programmers will work, and the more will get done.

But _your_ side of that is that you have to be honest enough to tell the truth, even when it's not what the person you're talking to wants to hear. Not whine about the truth, but accurately, calmly, and professionally report your progress, how much the customer can expect to get from you every time you sit down to plan an iteration, etc.

There are good reasons why the white book talks about "courage". It's not a joke or "feel good" filler, and it's not easy.



EditNote: Aos finalizar o post, vi que o James Shore também publicou sobre este mesmo post... coincidência?

[]s

11 dezembro 2007

Marcio Marchini at edugraf


Saudações a todos!
Bem, na semana passada, em Florianópolis, houve uma apresentação do Marcio Marchini, consultor da Bedarra, empresa Canadense do Dave Thomas. Bem, o Marcio está no Brasil para auxiliar a Audaces na adoção do desenvolvimento Ágil. Estamos crescendo muito com a participação dele!

Desculpe a divagação.

Na terça passada o Marcio fez uma apresentação (aula aberta) com o título "Desenvolvimento de Software no Silicon Valley North", mostrando sua experiência com Desenvolvimento de software e principalmente com Desenvolvimento Ágil.
A palestra foi bastante produtiva, e alguns pontos são importantes ressaltar:

- Na Rational eles usam Diagramas de classe para o desenvolvimento? Resposta: HAHAHAHAHAHAHAHA
- Na Rational eles fazem testes automatizados? Resposta: HAHAHAHAHAHA
- E na IBM? Resposta: HAHAHAHAHAHA
- A Microsoft utiliza o Project para desenvolvimento de Software? Resposta: HAHAHAHAHAH

"Em casa de ferreiro o espeto é de pau"...

Também foi uma oportunidade para o Marcio divulgar os serviços da Bedarra no Brasil... com o CTIP (Continuous Test and Integration Plattaform), que é uma compilação de vários sistemas para promover a Integração Contínua.

O Edugraf disponibilizou os slides da apresentação, e logo estará disponível o video com a palestra... vale muito a pena conferir!

Veja os slides: Marcio-Bedarra-Agile.pdf

[]s

31 outubro 2007

Pair it on baby!!


by Cenqua



Solução para todos os problemas com falta de cadeiras para realizar PairProgramming! Agora sim! Você pode realmente aproveitar todos os beneficios da atividade mais polêmica do XP.

Já sei o que vc está pensando:

Mas Victor, minha equipe tem um número ímpar de desenvolvedores! Não vai dar pra usar essa cadeira! Que pena!!



SEUS PROBLEMAS ACABARAM!!!
Mais barato que um programador ou analista, não reclama das gambiarras que você fizer no código, não pede para ir ao banheiro e ainda, se você for bonzinho, pode realizar suas fantasias!!!


Quem não vai querer fazer dupla com essa linda mocinha??

Gostou? Quer saber mais a respeito delas: Real Doll, para todos os pervertidos do mundo!


30 outubro 2007

Entre a Expectativa e a Satisfação


Isso somente ocorre por aqui, em Florianópolis: Mulheres normalmente reclamam que os homens não prestam, e estes por sua vez, sempre dizem que elas querem demais... Interessante os pontos de vista discordantes desse conflito, onde mulheres esperam muito dos homens, que por sua vez, por não terem o real conhecimento do quê elas esperam, acabam passando a imagem de desleixados, relapsos, insensíveis ou inadequados. Seria isto uma realidade? Somos assim tão a quem das expectativas?

É realmente complexo assumir a postura: "Eu sei tudo o que você precisa, não se preocupe, vou satisfazê-la!" e não quebrar a cara dentro de uma relação. Isto porque é humanamente impossível saber de antemão o que pode ou não satisfazer uma mulher sem que ela mesma seja consultada a respeito. E todos nós somos diferentes neste sentido... é necessário que a conquista seja iterativa, isto é, a cada momento descobre-se o que é necessário fazer para suprir uma necessidade, obtém-se o feedack e parte-se para outra necessidade... hehehehe simples né?

Seria nossa atitude como profissionais semelhante? Não estaríamos tentando satisfazer clientes imaginando de antemão tudo que ele possa querer?
Motivação para mim é um assunto bastante delicado, e está solidamente aplicado em conceito do Desenvolvimento Ágil, talvez as características psicológicas e sociais relacionadas ao Scrum e XP é que tornem sua utilização mais agradável para as equipes.

Ciclo de expectativa e a atuação do Cliente

Como consumidores que somos, no dia-a-dia, sempre temos uma opinião formada sobre o que nos agrada e o que não nos agrada. O fato desta noção ser tão pessoal, faz com que muitas vezes tenhamos uma postura pessimista com relação a alguns produtos, já que não existe uma preocupação em produzir algo personalizado, que atenda nossas próprias necessidades.
O modelo de entrega contínua de valor agregado e feedback contínuo em práticas de Sprint Review, Sprint Planning, Jogo do Planejamento, Cliente Presente e iterações menores garante maior satisfação do cliente.
Infelizmente, expectativas são inversamente proporcionais à satisfação. Isto é, lembrando do exemplo amoroso acima, quanto mais uma mulher espera de um homem, menor será a satisfação que ela terá ao perceber que não é possível para seus parceiros suprirem tais expectativas.

O mesmo ocorre com seus clientes, que esperam 6 meses ou até mesmo um ano para poderem visualizar o software em funcionamento. Assim, o resultado esperado por eles não consegue ser atingido, já que eles passaram tempo demais fantasiando como seria o sistema.
No Desenvolvimento Ágil trazemos para nível contornáveis esta balança entre expectativa e satisfação. Isto é: se quanto mais se espera de um sistema maior é a frustração em não obter o resultado, vamos diminuir a quantidade expectativas e, no menor tempo possível, receber o feedback necessário para mudar e adequar-se às novas expectativas que surgem.
Simples? Nem tanto. As várias práticas relacionadas acima se unem para garantir que o cliente esteja sempre satisfeito, ou ainda, que no menor tempo possível ele receberá algo concreto com o qual poderá gerar valor para sua empresa.
Scott Ambler traz de forma exepcional uma comparação entre modelos tradicionais de feedback e os modelos Ágeis, que trascrevi uma parte neste post (sim, em inglês). Leia o documento completo


Technique Description Feedback Period
Active Stakeholder Participation Stakeholders (users, managers, support people, ...) are actively involved with the modeling effort, using inclusive techniques to model storm on a just in time (JIT) basis. Hours. A stakeholder will describe their requirement(s), then the developer spend several hours, or perhaps day or two, implementing them to produce working software which they can then show to the stakeholder(s).
Agile Model Driven Development (AMDD) AMDD is the agile version of Model Driven Development (MDD). With an AMDD approach, at the start of a project you do some high-level, initial requirements modeling and initial architecture modeling. During development you model storm on a just in time basis. Hours. With model storming, you explore a requirement with your stakeholder(s) or a technical issue with other developers and then spend several hours or days implementing working software.
Big Design Up Front (BDUF) With a BDUF approach, a comprehensive design document is developed early in the project lifecycle which is used to guide the implementation efforts. Months. It is typically months, and sometimes years, before stakeholders are shown working software which implements the design.
Big Requirements Up Front (BRUF) With a BRUF approach, a comprehensive requirements document is developed early in the project lifecycle which is used to guide the design and implementation efforts. Months. It is typically months, if not years, before stakeholders are shown working software which implements their requirements.
Code Inspections A developer's code is inspected by her peers to look for style issues, correctness, ... Days to Weeks. Many teams will schedule reviews every Friday afternoon where one person's code is inspected, rotating throughout the team. It may be weeks, or even months, until someone looks at the code that you've written today.
Continuous Integration The system is built/compiled/integrated on a regular basis, at least several times a day, and ideally whenever updated source code is checked into version control. Immediately after the system is built, which is often done in a separate "project integration sandbox" it is automatically tested. Minutes. You make a change to your code, recompile, and see if it works.
Model With Others The modeling version of pair programming, you work with at least one other person when you're modeling something. Seconds. You're discussing the model as you're creating it, and people can instantly see a change to the model made by someone else.
Model/Documentation Reviews A model, document, or other work product is reviewed by your peers. Days to Weeks. A work product will be created, the review must be organized, materials distributed, ... The implication is that it can be weeks, or even months, before the item is reviewed.
Pair Programming Two developers work together at a single workstation to implement code. Seconds. You're working together to develop the code, the second coder is watching exactly what the person with the keyboard is doing and can act on it immediately.
Test Driven Design (TDD) With TDD, you iteratively write a single test then you write sufficient production code to fullfill that test. Minutes. By implementing in small steps like this, you quickly see whether your production code fulfills the new test.
Traditional Acceptance and System Testing Acceptance testing attempts to address the issue "does the system do what the stakeholders have specified". System testing, including functional, load/stress, and integration testing, attempts to address the issue "does the system work".

With traditional testing the majority of testing occurs during the testing phase late in the lifecycle. Testers will write test cases, based on the requirements, in parallel with implementation.

Months. By waiting until the system is "ready for testing", the testers won't see the system until months after the requirements are finalized.


Entre amores e projetos, seguimos tentando a todo custo gerar um único valor: satisfação.

[]s

27 outubro 2007

Impressões - Semana Acadêmica do Senac



Saudações a todos!

Recorde para mim: 3 capitais brasileiras em menos de uma semana...
Informação off-topic: Dona Rita, minha mãe, defendeu o mestrado esta semana e está toda feliz pela nota 10 com louvor na PUC/SP. Isso ai! PARABÉNS MÃE!! Estou em São Paulo para comemorar junto com ela essa conquista!! (...)

Voltando.
Quinta feira apresentei duas palestras na semana acadêmica do Senac, como descrito no post anterior. Muito bom!! Para as duas primeiras palestras falando de Desenvolvimento Ágil que fiz... até que foi ótimo!

Bem, foi bastante diferente do que imaginei, mas gostei muito da experiência...
A primeira das apresentação foi para um grupo pequeno de alunos do curso de Análise de Sistemas, e confesso ter ficado um pouco receoso se o foco estaria realmente adequado para os participantes, mas no final correu tudo bem, espero que as pessoas tenham gostado.

A segunda apresentação, com 50 inscritos foi mais tranquila, me senti mais à vontade com as perguntas dos participantes, e o ritmo da apresentação foi mais orgânico. Tanto que consegui falar por mais de 2 horas... absurdo! E só duas pessoas dormiram!! Com certeza um recorde!

Questões importantes: precisamos exercitar mais nosso poder didático e explicar melhor conceitos, evitando que coisas saiam mal entendidas. Mais de uma pessoa me perguntou: "vem cá, como esse tal de XP consegue elimar toda a documentação? Isso funciona mesmo?"... vamos produtores de conhecimento, aos princípios!! Eles nos salvarão da mediocridade do mundo... Agilistas Uni-vos!

Fiquei muito feliz em saber que um grupo de desenvolvimento de um Hospital de Porto Alegre conseguiu utilizar eXtreme Programming em uma equipe php, influenciando os demais desenvolvedores a utilizar algumas práticas. Um comentário interessante que ouvi: "Uma coisa interessante que identificamos é a mudança de postura com os cliente: ao invés do papel de chato, sempre cobrando 'e ai, ta pronto já esse sistema?' que os cliente faziam, passaram a ser os próprios desenvolvedores a cobrar por atitudes mais colaborativas dos clientes: 'e ai, já testou a funcionalidade que lhe enviamos?'". Bom!! Muito bom!!

Abaixo segue uma parte da apresentação... apenas o início... agradeço ao Pelotas (vulgo professor Guilherme) por ter gravado essas partes no celular... tb não consegui editar o video para que ele ficasse na posição correta... hahahah eu sei, eu sei... está horrível, mas alguém sabe me dizer como deixá-lo correto???
PS: desculpem as tosses!! que coisa feia!



24 outubro 2007

Palestra - Semana Acadêmica Senac RS



Saudações a todos!
A convite de um grande Amigo (Guilherme Pelotas), hoje estou de viagem marcada a Porto Alegre apresentar a palestra: Desenvolvimento Ágil - O desafio da mudança no dia 25 (quinta-feira)

A apresentação será feita na Semana Acadêmica das Faculdades Senac.

Bem, minha intenção é apresentar alguns princípios por trás do desenvolvimento Ágil (seguindo o exemplo de Kelly Waters) e de que maneira eles se unem gerando softwares de qualidade e divulgando empresas como o Google (se é que existe alguma empresa como o google). De forma descontraída, quero passar o que acredito ser o mais importante no desenvolvimento de software.

Programação do evento:
http://www.senacrs.com.br/2007/personal/2007109/10361.pdf
Uma correção: Meu nome é Victor Hugo Germano =)

Segue o pdf da apresentação:
http://www.4shared.com/file/27325657/fa6c772e/Desenvolvimento_gil.html

Novamente, minha intenção é divulgar o desenvolvimento Ágil, por isso disponibilizei a apresentação em seu formato real... sinta-se livre para modificá-la, critiá-la e distribuí-la.... desde que mantenha as referências... (chame-me de lunático... mas eu sou completamente partidário da mentalidade Wikinomics) =)
Ainda estou verificando a questão de copyrigth das imagens... mas logo se resolverá.

[]s

17 outubro 2007

Tornando-se um líder Ágil - Parte 2

Como acabar com um projeto em nove passos


Se você já passou por projetos que:


  • Simplesmente não deu certo

  • Foi cancelado e você nem foi avisado

  • Foi um desastre de proporções nababescas

  • Atrasou por meses, com orçamento estourado e seus cabelos brancos

  • Acabou com seu cabelo de tanto stress


Este texto não serve para você... muito provavelmente por o que escreverei você já deve saber...

Bem, com a experiência de quem já passou por projetos assim, Steve McConnell escreveu sobre Nove pecados que não se deve cometer, caso queira que seu projeto seja um sucesso. (não foi o caso de um projeto que participei...). Engraçado, mas o artigo que li é de 2001, mas completamente atual! Que coisa, será que até quando vamos acreditar nos velhos paradigmas??? Quantos projetos mais devem ir por água abaixo?

Vamos lá: (Fonte: The nine Deadly Sins of Project Planning, 2001) (versão online)

1- Planejamento Nenhum!
Obviamente, sem planejamento, não há projeto que se sustente... ou melhor, talvez possa existir por algum tempo, mas efetivamente ele ruirá por não conseguir suportar os encargos que um projeto desse tipo possui. Nota mental: encontre profissionais que saibam planejar e não seguir planos.

2- Falha ao levar em conta todas as atividades do projeto
Não planejar o suficiente. Não menospreze problemas que podem ocorrer durante o percurso do projeto. NUNCA crie planos irreais em que se assume que o projeto estará lindo e maravilhoso não importante o que ocorra com sua equipe, seu sistema, a tecnologia envolvida...
Extremamente importante levar em consideração: versões antigas do projeto, o tempo de setup para deploy da aplicação, a falta de testes suficientes, a motivação e comprometimento da equipe...
Problemas devem ser corrigido no momento em que eles surgirem em sua frente!

3- Falhar ao planejar levando em consideração o risco
Tudo bem se você não gosta de Desenvolvimento Ágil, mas acreditar que a melhor coisa a fazer é deixar para se preocupar com riscos de projeto só quando for tarde demais é burrice! Neste ponto o fato que nós tentarmos priorizar as tarefas, realizando as mais importantes primeiro, é que saimos na frente no controle de riscos. Assim, os pontos mais críticos do sistema são resolvidos primeiro e possuem acompanhamento diário, aliviando a vida de todos.

4- Utilizar o mesmo planejamento para todo projeto
JOGUE FORA A EXPRESSAO: "Esta é a forma que fazemos as coisas aqui na empresa"!!!!!!!!!!!!
Cada projeto deveria ser único, ou você terá grandes problemas em adequar tudo ao seu Modelo Unificado de Projetos...
Este tipo de atitude funcionará muito bem enquanto os projetos forem semelhantes. No momento em que um projeto novo, com escopo e necessidades novas surgir, você estará encrencado.
Não digo para criar um modelo de gerenciamento completamente novo para cada projeto da empresa, mas deixar esse mesmo modelo flexível às especificidades que cada projeto possui. Isso inclui, por exemplo, não tratar um projeto Web da mesma forma que se trata um projeto Desktop.

5- Utilizar modeos empacotados indiscriminadamente
Seguir princípios não quer dizer que não se possam fazer ajustes à realidade do projeto. Acreditar que comprar o livro sobre eXtreme Programming e utilizá-lo a risca vai ser o máximo é assinar o atestato de fracasso.
Identifique necessidades, estude soluções e aplique as melhores práticas de forma coordenada, para que tudo possa ser validade em seu ambiente... e o mesmo serve para o RUP, CMMI, PRINCE2, etc

6- Permitir que o planejamento se torne divergente da realidade
Um procedimento comum em projetos é criar um plano inicial e tentar seguí-lo na medida do possível. E independentemente do que ocorra, tentar manter este mesmo plano no decorrer do projeto...

7- Planejar com muitos detalhes de início
Fato: REQUISITOS MUDAM
Poderíamos discutir por horas aqui, mas não vou fazer isso, deixarei que a experiência de vocês fale por si só.
Além do óbvio disperdício de tempo e recursos que existe ao se planejar com muitos detalhes de início, eu acredito que o maior problema dessa abordagem é o descontrole emocional que isso pode causar numa equipe. Imagine-se trabalhando numa especificação por 6 meses, e então durante o primeiro mês de desenvolvimento descobre-se que a tecnologia ou os requisitos não vão atender à demanda. Todo seu trabalho será jogado fora e refeito... quem não gostaria de um bom saco de pancadas para evitar os pensamentos homicidas neste momento?

8- Planejar pela compensação
Não acredito em curva de aprendizado durante o planejamento. Seja consistente e realista ao traçar um planejamento para adesão de novas metodologias, novas pessoas e novos projetos. Se você planejar supondo que a equipe compensará o tempo perdido, certamente acabará com um projeto atrasado. Já passei por um projeto desses, é frustrante...

9- Não aprender com as experiências passadas
Um projeto que participei, como programador, em que TODOS envolvidos com o desenvolvimento me disseram a mesma coisa: "Que droga, está acontecendo exatamente como nos outros projetos, vai dar tudo errado"...
Aceite o desafio da mudança! Credite na experiência dos projetos, faça sessões de retrospectivas... somente assim pode evitar a repetição de erros conhecidos... é o que dizem: "erra é humano, mas persistir no erro..."

Até mais!

15 outubro 2007

Integração Contínua



Termo muito importante no mundo Ágil... eu disse muito? Eu quis dizer MUITO!
Sua intenção é ser a panacéia para os males relacionados a builds e gerações de versão para software, além de pode se tornar uma ferramenta bastante importante para tomada de decisão por parte da área gerencial da equipe... a idéia é simples:
um único botão é responsável por disparar uma série de ações que culminam com a contrução do seu sistema... assim, simples... que tal?
A este mesmo procedimento de construção podem ser adicionadas rotinas como:
  • Execução de testes automatizados
  • Geração de versões internacionalizadas de seu software
  • Disponibilizar a versão atual em desenvolvimento para o cliente
  • Criação de relatórios de código como:
  • Cobertura de testes
  • Inspeção de padrões de codificação
  • Estatísticas de acoplamento

Todo o processo segue a arquitetura descrita na imagem abaixo:


O cenário acima pode ser descrito como: (Fonte: Continuous Integration)
  1. O desenvolvedor envia o código para o controle de versão (SVN, CVS, etc). Enquanto isso a máquina de integração (servidor de Integração Contínua) está verificando o repositório buscando por modificações
  2. Logo após um commit ser efetuado, o servidor ao verificar que alguma mudança ocorreu no repositório inicia o processo de build baixando os arquivos do Servidor de Controle de Versão. Assim, o script de build é executado, testes são realizados, relatórios gerados, e todo o projeto é integrado.
  3. O Servidor de Integração envia por e-mail ou outros dispositivos o feedback sobre build para usuários específicos do projeto
  4. O servidor volta ao estado de Poll buscando por mudanças no repositório
Um comportamento importantíssimo: Esta arquitetura força a equipe a manter sempre em funcionamento o código fonte que existir no repositório, adicionando mais controle a possíveis problemas de implementação ou integração.

Encontrei um site comparativo sobre ferramentas de build contínuo: Continuous Integration Matrix. Vale muito a pena dar uma lida. Autalmente utilizando o luntbuild, sem grandes problemas... bastante eficiente a ferramenta.
No livro, algumas outras ferramentas são citadas:
  • Doxygen: Gera diagramas de classes e relacionamento automaticamente para uma infinidade de linguagem. Ferramenta muito poderosa!!
  • X10: Utilizado para controlar qualquer mecanismo que utilize radio frequencia. Ideal para colocar um sirene ao lado com servidor de build para que todos saibam que algo de errado foi enviado ao repositório
  • Sourcemonitor: Geração de métricas sobre desenvolvimento
  • Selenium: Automatize testes de aceitação. Ferramenta show demais!
  • Checkstyle: Ferramenta de inspeção de código para Java

Um exemplo prático pode ser encontrado no site da Improveit

É isso... =)

04 outubro 2007

Acertando do início!



Saudações!
Desculpem a demora... estou preparando uma apresentação para a semana acadêmica do senac-RS e ando meio ocupado para escrever... mas vamos lah!

Texto muito bom de Jean MacAuliffe da NetObjectives (sempre ouço o podcast deles...), que trata sobre qualidade de software baseada nos princípios do Lean Thinking e Desenvolvimento Ágil, e a imensa diferença entre nossa abordagem e a abordagem tradicional.

Resumão:

Test-Driven Development unido a Pair Programming, Code review e Shared code Responsablities são as principais práticas para que se possa criar um ambiente onde a qualidade é o principal do desenvolvimento do produto.
O princípio Build quality in do Lean Manufacturing pode ser realmente aplicado num ambiente de desenvolvimento de software...
Pense nisso...

Pessoalmente acredito que outras práticas não tão relacionadas a desenvolvimento podem ser muito importantes para este estado de qualidade total... inclusive já escrevi sobre elas aqui.


Arquivo: Get it Right from the Start

=)


27 setembro 2007

Tem certeza que não serve para sua empresa?



Saudações!

Bem, o Clavius Teles, da Fortes Informática, indicou na lista xpRio um documento muito interessante falando sobre a aplicação de práticas Ágeis no Google. Sim, como a própria apresentação diz: "Práticas Ágeis em Projetos Reais"...

Engraçado o título da apresentação, talvez para que as pessoas passem a dar algum crédito para o que está acontecendo no mundo, e como nós estamos avançando na utilização de modelos de desenvolvimentos mais próximos da realidades das empresas. (Desenvolvimento Ágil está mudando o mundo!)

Pontos Importantes sobre a apresentação:

- Existe uma influência muito forte de prática de XP na forma de trabalho das equipes. Praticamente todas as práticas são listadas na apresentação.

- Preocupação em manter o desenvolvimento sobre o olho atento da qualidade, através de métricas e Feedback (Métricas em Desenvolvimento Ágil)

- Desenvolvimento Ágil escalável com certeza!
Num dos exemplos que me chamou a atenção, em que a equipe deveria trabalhar com código legado, vê-se a preocupação com testabilidade, com ciclos de refactoring para possibilitar a criação de testes e ainda a utilização de TDD para qualquer código novo que fosse inserido...

- "Plans are nothing; planning is everything" - Dwight D. Eisenhower

Lembre-se disso:

We do Agile at Google in response to real need, to provide real results, not because someone thought it would be a cool thing to do.


Veja a apresentação na íntegra


Outro exemplo interessante: Yahoo!

Results From Scrum
The benefits of Scrum reported by teams come in various aspects of their experience. At Yahoo!, we have migrated nearly 90 projects to Scrum in the last 30 months, totaling almost 900 people, and the list of teams using it is quickly growing. These projects have ranged from consumer-facing, design-heavy websites like Yahoo! Photos, to the mission-critical back-end infrastructure of services like Yahoo! Mail, which serves hundreds of millions of customers; they range from entirely new products like Yahoo! Podcasts, which used Scrum from concept through launch (and won a Webby Award for best product in its category that year), to more incremental projects, which included work on new features as well as bug fixes and other maintenance; and we’ve used Scrum for distributed projects, where the team is on separate continents. Several times each year we survey everyone at Yahoo! that is using Scrum (including Product Owners, Team Members, ScrumMasters, and the functional managers of those individuals) and ask them to compare Scrum to the approach they were using reviously.


Veja o texto na íntegra


Dúvida: você ainda se acha grande o suficiente para dizer que Desenvolvimento Ágil não serve pra você?


Um abraço