Parabéns NetBeans !!!!

terça-feira, 21 de outubro de 2008


Como muitos já sabem o NetBeans está completando 10 anos de vida, e como homenagem, cantamos parabéns em grupo na época do Sun Tech Days.








Segue o mico, quer dizer o vídeo.




No vídeo gravado na churrascaria Jardineira Grill, estão presentes da esquerda para a direita, Renato Bellia e sua esposa, a esposa de um dos meus amigos, logo atrás dela eu e minha esposa, ao lado dela se encontra a minha grande amiga Janice Campbell, atrás dela, Jefferson Prestes e Michel Graciano, no centro Marcelo Castellani (de jaqueta preta), Mauricio "Maltron" Leal, atrás dele Vinicius Senger e Yara Senger, atrás deles, está Greg Sporar, e mais dois gringos da Sun, e logo após a esposa do Bruno com suas lindas filhas, atrás delas se encontra Henrique Meira e seu colega, e por último o JavaMan.

Fonte do Vídeo: http://www.netbeans.tv/on-the-road/Brazilian-Birthday-Song-400/


Outra dessa só daqui a 10 anos... =)

PARABÉNS NETBEANS !!!

Seja Bem Vindo InfoQ Brasil

segunda-feira, 20 de outubro de 2008

Agora está confirmado, e no dia 01 de Novembro já tem uma festa marcada, a Fratech realizará o evento de Lançamento do portal InfoQ Brasil.

Para quem não conhece, o site InfoQ criado e fundado por Floyd Marinescu, o mesmo criador do theserverside, é considerado um dos maiores portais do mundo sobre tecnologia, com diversos artigos técnicos de altíssima qualidade, com material criado por personalidades como Martin Fowler, Joshua Bloch, está chegando ao Brasil com tudo.
E para começar em grande estilo, no dia primeiro será realizado a festa de lançamento no estilo workshop.

Nesse evento teremos profissionais consagrados no mercado falando sobre os tópicos mais importantes abordados no portal. A grade irá abordar assuntos como Java, .NET, SOA, Ruby, Agile e Arquitetura. Todas as palestras terão um formato de painel, expondo o que há de mais recente em cada Queue. No evento irei falar sobre a Queue Architecture.


A vinda da InfoQ não seria possível sem os esforços da Fratech, em especial do Felipe Rodrigues, e o Manoel Pimentel (Visão Ágil), e de todos os editores, de altíssima capacitação técnica, que tem feito o melhor para traduzir o conteúdo do portal para o Português. Sem dúvida para mim é um orgulho participar deste grupo.


Mais informações:

Fratech: http://www.fratech.net/model/event!show.act?event.id=26

Saúde e Sucesso !!!

SCSNI Study Group - Netbeans IDE Certification Exam

sábado, 18 de outubro de 2008

If you don´t know already, and to celebrate 10th NetBeans Birthday yeaahhh, Sun is planning to release a new certification for NetBeans IDE (Beta), if you are interested and would like to know more about it, or you are just looking for material to study, take a look at the SCSNI Study Group, the first study group to this certification, it has a plenty of related stuff.

You can help to increase the group providing mocks, articles, or even changing the site, if you wanna help, please let me know mailling me at wrsconsulting@gmail.com

As a beta tester, you officially test the test and will be able to provide Sun with valuable comments and technical feedback about the Netbeans IDE questions. The Sun beta exam counts towards official Sun Certified Specialist Netbeans IDE (SCSNI) Certification!

Exam Testing Objectives
    Section 1: IDE Configuration
    • 1.1 Demonstrate the ability to configure the functionality available in the IDE, including using enabling and disabling functionality and using the Plugin Manager.
    • 1.2 Explain the purpose of the user directory and the netbeans.conf file and how these can be used to configure the IDE.
    • 1.3 Demonstrate the ability to work with servers in the IDE, such as registering new server instances and stopping and starting servers.
    • 1.4 Describe how to integrate external libraries in the IDE and use them in coding and debugging your project.
    • 1.5 Demonstrate knowledge of working with databases in the IDE, including registering new database connections and tables running SQL scripts.
    • 1.6 Describe how to integrate and use different versions of the JDK in the IDE for coding, debugging, and viewing Javadoc documentation.
  • Section 2: Project Setup
    • 2.1 Describe the characteristics and uses of a free-form project.
    • 2.2 Demonstrate the ability to work with version control systems and the IDE. (Which VCS's are available, which ones you need an external client for, how to pull sources out of a repository, view changes, and check them back in).
    • 2.3 Describe the ways in which you can change the build process for a standard project, such as configuring project properties and modifying the project's Ant build script.
    • 2.4 Configure your project to compile against and run on a specific version of the JDK.
  • Section 3: Java SE Development
    • 3.1 Demonstrate the ability to create NetBeans projects from the source code of an existing Java SE program.
    • 3.2 Describe how to manage the classpath of a Java SE project, including maintaining a separate classpath for compiling and debugging.
    • 3.3 Demonstrate the knowledge of the NetBeans GUI Builder and the ability to lay out and hook up basic forms using it.
    • 3.4 Demonstrate the ability to package and distribute a built Java Desktop project for use by another user.
  • Section 4: Java EE Web Development
    • 4.1 Describe how to create a NetBeans project from the source code of an existing Web application.
    • 4.2 Distinguish between a visual web application and web application.
    • 4.3 Demonstrate knowledge of which web frameworks are available in NetBeans IDE and how they are added to and used in a web application.
    • 4.4 Describe how to monitor HTTP requests when running a web application.
    • 4.5 Demonstrate a knowledge of basic tasks related to building and deploying web applications to a server, such as changing the target server and undeploying an application.
  • Section 5: Editing
    • 5.1 Describe the purpose and uses of refactoring and demonstrate the ability to perform basic refactoring on Java source code.
    • 5.2 Describe how to use the Options window to change the default appearance and behavior of the Source Editor.
    • 5.3 Describe the ways that the IDE highlights errors in source code and the tools the IDE offers for correcting those errors.
    • 5.4 Demonstrate the ability to use editor hints, such as implementing all the methods for an implemented interface.
    • 5.5 Demonstrate the ability to use live code templates such as automatic generation of constructors, try/catch loops, and getters and setters.
  • Section 6: Testing, Profiling, and Debugging
    • 6.1 Demonstrate the ability to work with JUnit tests in the IDE, such as creating JUnit tests and interpreting JUnit test output.
    • 6.2 Describe how to debug a local (desktop) application, including setting breakpoints and stepping through code.
    • 6.3 Describe the difference between local and remote debugging and describe how to debug a remote (web) application.
    • 6.4 Describe the purpose of profiling applications and how to profile a local desktop application in the IDE.

References:

Official Site: http://www.sun.com/training/certification/netbeans.html
Study Group: http://sites.google.com/site/netbeansscsni/
NetBeans 10th Birthday: http://www.netbeans.org/birthday/logos.html

NetBeans Rocks, The only IDE you need !!!

[Resumo Executivo] Evento Smart SOA 2008 IBM

quarta-feira, 15 de outubro de 2008


Na semana passada, no dia 08 estive presente no evento Smart SOA da IBM, uma iniciativa da IBM que levou para 100 cidades ao redor do mundo as novidades em Smart SOA e o lançamento da nova linha de produtos WebSphere, e preparei um resumo executivo do que vi.

O evento foi focado na nova linha produtos Websphere da IBM para suporte a implantação de SOA e foi demonstrado um case de sucesso, da empresa OJC - Organizações Jaime Câmara (TV Anhanguera). Que adotaram a linha de produtos da IBM para implantar os seus processos.

Na primeira apresentação, o vice-presidente de marketing de produto WebSphere Paul Brunet, deu uma introdução ao conceito de SOA e em BPM, neste último tópico, ressaltou a importância da área de negócio mapear os seus processos com BPM.

Afirmou que uma implantação de SOA, requer mudanças nos planos de negócio, e demonstrou alguns números interessantes, como por exemplo, que no mundo dos negócios, 83% dos CIOs esperam mudanças reais em seus processos de negócio, e que 98% dos planos de negócio mudam em decorrência da estratégia corporativo, que por sua vez buscam mais performance e agilidade em seus processos de negócio.

Citou também as prioridades TOP dos CIOs que são:

  • Tornar os processos locais (departamentais) em processos globais (corporativos).
  • Tornar os processos que são automáticos e visíveis em processos dinâmicos, de fácil adaptação e baixo tempo de resposta.

Foi proposto que BPM possibilita a mudança do negócio, sendo SOA o Core (Núcleo) do BPM. Após a apresentação dos conceitos, foi dada uma visão geral do ferramental, entre seus produtos podemos destacar:

WebSphere Process Server para gerenciamento de tarefas humanas e orquestração de processos. O produto oferece visibilidade dos processos em real time de forma consolidada e customizada.

Monitoração dos processos chaves (KPI) e configuração para recebimento de email de acordo com índice.

WebSphere Business Modeler que é uma ferramenta gráfica para gerar os diagramas do BPM, e que é possível gerar os processos executáveis (geração de código). É possível importar modelos criados no Visio e PowerPoint para esta ferramenta.

WebSphere Business Monitor monitoração dos processos e eventos de negócio.

WebSphere Business Events que é um módulo para a parametrização de eventos do sistemas, onde foi explanado o conceito de BEP - Business Event Process, integrado com o módulo WebSphere Business Monitor,

E finalmente foi apresentado o IBM BPM Suite, que é a suíte de ferramentas para SOA da IBM, que fornece em seus módulos o gerenciamento dos eventos de negócio, o controle do conteúdo ativo, relatórios analíticos que dão uma visão real-time das vendas, um engine de regras, seleção de serviços e policies.

Na apresentação de Takeshi Kamimura, ele explicou a importância do alinhamento entre TI e da área de negócio para a implantação de SOA, sem este alinhamento não é possível montar uma arquitetura orientada a serviços. Apresentou estudos que provam que quando existe um alinhamento entre TI e negócios os ganhos de produtividade DUPLICAM.

E apresentou em um quadro padrão das fases de implantação de SOA por abordagem, o percentual em que as empresas brasileiras hoje se encontram.

Como criar o alinhamento entre TI e as áreas de negócio:

  • Desenvolver uma linguagem compartilhada, que TI e negócio entendam.
  • Deixar claro as prioridades (compartilhada).
  • Estabelecer equipe para tomada de decisões conjunta.
  • Utilizar uma linguagem de mercado.
  • Fazer referência à validação externa. (O que existe de melhores práticas no mercado)

Na apresentação do case de sucesso da OJC, Júlio de Oliveira o atual gerente de TI explicou o que os motivou a adotar SOA e a escolha da IBM como parceira. Foram feitas Provas de Conceito, RFP, RFI que apontaram a necessidade de mudança para SOA. Este estudo revelou a IBM como a empresa que atende o negócio. Após escolher a IBM como fornecedora e com base nestas informações montaram uma matriz SWOT para implantação de SOA, que foi aberta para o público, conforme segue:

Para as fraquezas foi montado um plano de ação conforme segue:

  • Reestruturação da equipe.
  • Fixação dos conceitos SOA.
  • Treinamentos contínuos em Java.
  • Workshops sobre as ferramentas.
  • Hands-On.
  • Envolvimento dos consultores do ERP.
  • Foco nas especificações de regras de negócio e na integração.
  • Treinamento Oficiais IBM.
  • Mentoring por Terceiros.
  • Migrar de forma gradual.

Plano de Ação para as Oportunidades.

  • Apresentar conceitos macros, as oportunidades imediatas e as possibilidades em longo prazo (Planejamento Estratégico).
  • Exposição dos resultados parciais. (Quick Wins).
  • Pulso Firme:
    • Equipe
    • Parceiros
    • Clientes Internos.

E por fim, eles apresentaram o case selecionado (Faturamento) para implantação, os fatores que o levaram a escolher este case foram a Relevância, a Rastreabilidade, o Monitoramento e o Risco agregado, tudo isso alinhado aos objetivos do negócio. Com base nestas informações eles selecionaram o sistema de Faturamento.

É importante frisar que em dois anos de implantação de SOA, hoje eles estão em transição para a fase de Transformação (vide quadro acima), e que eles fizeram esta migração para SOA de forma gradativa, e que somente HOJE estão estruturando uma área de Governança em TI, que até então não existia.

Algo que para ser sincero eu nunca teria pensado, até ver a palestra, para mim era inconcebível implantar SOA sem governança. Vivendo e aprendendo !!!

Estimativas Ágeis - Planning Poker

quarta-feira, 1 de outubro de 2008

Em projetos de software tradicionais, (leia-se não ágeis), geralmente fazer estimativa é algo muito chato, e que provavelmente será feito por apenas uma pessoa, que na maioria das vezes essa pessoa é o gerente de projeto, ou o líder da equipe, que utiliza métodos tradicionais para medir uma atividade com análise de ponto de função, ou por linhas de código, etc... mas acontece que quase sempre essa pessoa não conhece a fundo o negócio e as dificuldades técnicas de se implementar uma certa funcionalidade.

O que acaba gerando problemas no decorrer do projeto, pelo fato do analista de negócio (quando tem) não ter previsto uma funcionalidade adicional, ou uma regra de negócio imprescindível para o negócio.

Nesta altura de campeonato, quanto este tipo de situação acontece, geralmente o projeto já esta em um estágio avançado no desenvolvimento, e ATRASADO.. o cliente está puto,,, e sempre quem acaba levando a culpa é o incompetente do desenvolvedor.

Se você já se sentiu familiarizado com este triste relato, pois bem, não fique triste, pois isto já aconteceu comigo e acontece com milhares de pessoas nos dias atuais...

Pois bem, existe solução para este problema?

Sim, existe, se olharmos para alguns dos príncipios ágeis, conforme segue:

"Business people and developers must work together daily throughout the project. "
Traduzindo, quer dizer algo como "Analistas de negócio e desenvolvedores devem trabalhar juntos DIARIAMENTE no decorrer do projeto".
"The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. "
Traduzindo este também,

“O método mais eficiente e efetivo de obter informação para o time de desenvolvimento é na conversa cara-a-cara."
"Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. "
E por último..

“Mudanças de requisitos são bem vindas, mesmo em um estágio avançado no desenvolvimento. Processos ágeis alinham as mudanças para vantagem competitiva do cliente."

Uma estimativa bem feita durante a fase inicial do projeto, reduz muito as chances de você ter dores de cabeça no futuro.

Ok, você está se perguntando, "Mas isto não respondeu a pergunta !!!", como eu posso melhorar as estimativas no inicio de um projeto ou de uma nova iteração ???

Existe um método ágil para estimativas, chamada de Planning Poker, esse método foi descrito inicialmente por James Grenning em 2002 e depois popularizado por Mike Cohn no seu livro Agile Estimating and Planning,, essa técnica é muito conhecido em XP.

Para "jogar" o Planning Poker precisamos apenas de uma lista de backlog e um baralho. E o baralho, geralmente composto por cartas que possuem uma seqüência fibonaci ou similar (0, ½, 1, 2, 3, 5, 8, 13, 21, 34, 50, 80 ,100, ?) e uma carta opcional com um sinal de interrogação.

Por que utilizar esta seqüência, e não um conjunto de números naturais (0,1,2,3,4,5,6,7,etc...) ?

Boa pergunta, mas vou responder com outra pergunta, você consegue distinguir o número 13 do número 14? Fica mais fácil você ter uma noção de separação de complexidade, quando você trabalha com números em uma seqüência fibonaci, imagine que para cada tarefa, quando você for dar o seu peso, pense que uma tarefa com peso 2, é 2 vezes mais difícil que uma tarefa com peso 1.

Voltando ao PP, para jogar, cada participante, geralmente os membros da equipe de desenvolvimento (programadores, testers, designers, etc..) devem possuir uma seqüência de cartas, e cada funcionalidade da lista de backlog irá corresponder a uma rodada do jogo entre a equipe. Os membros não podem conhecer as cartas uns dos outros até início da rodada.

Para facilitar o entendimento, vou demonstrar um exemplo real, imagine que temos uma lista de backlog conforme a tabela abaixo, apresentada pelo Product Owner, e o mesmo dá explicações relacionadas a cada um dos itens, onde todos os membros discutem para chegar a um entendimento do problema.
Na nossa ambiente, vamo imaginar que temos 5 membros, 3 desenvolvedores (Carlão, Maria, Zeca), um tester (Júlio) e uma designer (Rita) e o Project Manager / SM (Walter). O Product Owner neste momento, já deu uma visão dos itens de backlog e explicou a necessidade do negócio, tirou algumas dúvidas e foi embora..

É importante frizar que os membros do time devem estimar todo o trabalho relacionado ao item do backlog, e não apenas a sua parte especifica.

Antes de iniciar a primeira rodada, o SM inicia a discussão:

Walter (SM): Pessoal, o que vocês acharam dessa user story (100)?, o usuário quer um repositório para armazenas os documentos operacionais da empresa assim, assim, assado, então, vamos votar:

Então, neste momento cada membro da equipe, pega uma carta que acha que corresponde com os Story points e depois que todos escolheram suas cartas, tem inicio a rodada. No nosso exemplo, o resultado foi esse:

Rodada 1:
Perceba que na primeira rodada, tivemos pessoas que votaram 50 (Maria, Julio), duas que votaram 80 (Zeca, Rita), um 21 (Carlão) e um 34 (Walter), neste momento o mediador (geralmente o Scrum Master) questiona os resultados.

Walter (SM): Peraí gente, vamos discutir, esta tendo muita divergência, Rita e Zeca, porque vocês acham que essa atividade tem um peso 80?

Rita (Designer): É por que, fico imaginando o tamanho dessa aplicação, já é uma bagunça hoje a forma que é organizado os documentos, imagina só o trabalho de reclassificar tudo, montar um repositório, modelagem, etc... e chora.. ..

Walter (SM): Huum entendi, e você Zeca.

Zeca (Dev): Concordo com a Maria, imagina a quantidade de trabalho.. e chora mais.. etc..

Walter (SM): Carlão porque você acha que é 21, é tão fácil assim??

Carlão (Dev): Na verdade, olhando na ótica do Zeca e da Rita, o problema me parece ser mais complexo do que pensei,..

Walter (SM): Então, o que vocês acham da gente pesquisar alguma ferramenta open source que nos ajude neste trabalho, como um ECM ??? Estava pensando em algo neste tipo, senão realmente teremos muito trabalho,,,

Júlio (tester): Ok Walter, ótima idéia, mas acho que vamos ter muita customização, e com a estrutura que temos hoje não será nada fácil.. Imagine a quantidade de testes !!!

Walter (SM): Certo, se todos estão de acordo, vamos implantar um ECM, vamos fazer mais uma rodada então...

Nisso, é feito a segunda rodada (Tabela 1), podemos ver que houve um consenso..

Neste exemplo simples, podemos observar que alguns benefícios ficam bem claros:
  • O Product Owner descreve cada história resumidamente, de forma que todos tem uma idéia do que esta rolando.
  • A sinergia entre a equipe aumenta, cada for iniciar um Sprint, onde as tarefas estarão bem definidas, os membros do time, terão uma idéia bem definida do que esta sendo feito, do que o seu colega de trabalho esta fazendo.
  • O risco de erros da estimativa diminui dramaticamente.
  • As diferenças de opiniões ficam transparentes, de modo que todos passam a discutir estas diferenças.
  • É possível re-estimar uma user story até que haja um consenso.
Ok, muito legal esta explicação, mas ainda falta algo, qual a relação entre os princípios ágeis citados no início deste artigo com este jogo de cartas?

Bem, respondendo a pergunta, eu diria que tem tudo a ver, quer ver só:
"O método mais eficiente e efetivo de obter informação para o time de desenvolvimento é na conversa cara-a-cara."
Em planning poker todos estão conversando, (quase sempre olho no olho), o que dá transparência ao negócio.
"Analistas de negócio e desenvolvedores devem trabalhar juntos DIARIAMENTE no decorrer do projeto".
Ao fazer o planning poker, estamos discutindo requisitos funcionais e não funcionais, que visam a realização de um desejo do cliente, e geralmente, durate o planning poker está o Product Owner, para tirar todas as dúvidas em relação ao negócio e verificar se está sendo feito o que foi acordado.

E por último..
"Mudanças de requisitos são bem vindas, mesmo em um estágio avançado no desenvolvimento. Processos ágeis alinha as mudanças para vantagem competitiva do cliente."
Isso irá sempre acontecer, sempre haverá novas features/sistemas a serem desenvolvidos, e durante a estimativa podemos discutir de maneira mais técnica, até modelos de arquitetura, pois querendo ou não, a arquitetura/modelo que será desenvolvido o produto tem um forte peso nas user stories. Portanto, a qualidade do código e do modelo é essencial para que as mudanças de requisitos sejam menos "traumáticas".

Estive no Sun Tech Days, e uma palestra que achei interessante foi a "Usando computação social para melhorar a produtividade no seu projeto" da "Java Champion" Fabiane Nardon, onde ela apresentou várias ferramentas para computação social, e uma das ferramentas citadas foi o site "http://www.planningpoker.com/", um site idealizado por Mike Cohn, e propõe uma ferramenta para que time distribuídos façam a estimativa em conjunto, tem algumas coisas a melhorar, mas a idéia é bem bacana..

OBS> Nas fotos acima, a 1º é uma sessão de planning poker no meu ambiente de trabalho, e na segunda foto o PO priorizando e discutindo os itens de Backlog.

Planning poker com certeza é uma ótima prática, e é também uma boa maneira de iniciar no mundo ágil..

Diversão garantida !!!