Certified Scrum Master (Scrum Alliance)

quarta-feira, 30 de abril de 2008












Recentemente tirei o certificado de Scrum Master fazendo um treinamento pela TeamWare, quem deu o treinamento foram os americanos Chris Doss e David B. Douglas, e o foco do treinamento é o de efetivamente treinar Scrum Masters.
O papel do Scrum Master é o mesmo de Gerente de Projeto, mais o Scrum Master não tem autoridade sobre o Product Owner ou a Equipe, ele é responsável apenas de seguir o processo Scrum conforme descrito, atuam como um coach , auxiliando o Product Owner e a Equipe a entender melhor como realizar o seu papel dentro do processo.
O treinamento foi totalmente ministrado em inglês e teve uma abordagem altamente prática sendo apresentado vários cases.
O treinamento focou os seguintes pontos:

  • Estimativa de esforço / tempo, utilizamos o planning poker.
  • Sprint Planning baseado em um case (com um PB já definido), onde fizemos a priorização dos Sprints.
  • Execução do Sprint.
  • Desenvolvemos nosso próprio modelo de Sprint Backlog.
  • Formas de comunicação com o Product Owner.
  • Sprint Demos (com direito a criação de protótipos e tudo mais).
  • Retrospectivas
  • Como buscar feedback.
  • Melhores Práticas
Minhas observações:
O curso foi bom, entretanto, acho que deveria estar explícito que para participar deste treinamento, o camarada precisa ter pelo um conhecimento prévio do assunto ou estar trabalhando com a metodologia.
Na minha opinião deveria ter uma prova de conceito para avaliar os conhecimentos do aluno.
Outra coisa, o treinamento como eu disse, é para formar SCRUM MASTERS, o curso não ensina como você pode definir a quantidade de pontos de estória que você pode incluir no seu Sprint. Como posso estimar a velocidade da minha equipe ? Como faço a estimativa de disponibilidade da equipe por Sprint ? Como posso analisar os Sprints anteriores no momento de planejar um novo Sprint ? Não foi explicado qual é a melhor maneira de você montar um taskboard, ou como calcular um gráfico burndown ? Como posso estimar dias VS horas ?
Digo isso para que você saiba que não vai encontrar estes tópicos, se você estiver procurando um curso de como fazer Scrum, eu não recomento este curso, recomendo que você faça um treinamento no mercado.
Enfim, o treinamento foi focado em gestão, e em como o Scrum Master deve se comportar e qual é o seu papel. E acho que o curso cumpriu o seu objetivo.

[EJB 3.1] Novidades na especificação - Parte 1

O mercado brasileiro ainda nem assimilou direito a especificação de EJB 3.0 e a JSR-318 - Enterprise JavaBeans 3.1 já foi aprovado pela maioria dos membros do comit executivo para as especificações SE / EE do Java. O único membro que reprovou a JSR foi a Apache.


Isso porque a Apache Software Foundation diz que a spec lead (SUN) esta em desacordo com a JSPA. O que foi explicado pela própria Sun.

The spec lead of the EJB 3.1 specification has confirmed that the TCK would contain no "field of use restrictions", as originally raised by Apache with regard to another JSR (i.e. the SE TCK licensing). That is a good thing.

However, in the absence of an explicit JSPA rule that would forbid such field-of-use restrictions, we will remain worried that a similar issue might resurface anytime, for any JSR.

Consequently, in the future, for any submitted JSR (by SUNW or not), we will specifically expect the spec lead to provide clear information on that aspect and take the answer in account when casting our vote.

As novidades na especificação 3.1 visou simplificar a já fácil especificação 3.0 dos EJBs, aumento o uso de annotations e consequentemente o uso ioc, conforme segue:

  • Uma visão Local simplificada que forneça acesso ao Session Bean sem a necessidade de uma interface de negócio local.

  • Empacotamento e o deployment de componentes EJB diretamente de uma arquivo .war sem a necessidade de um ejb-jar.

  • Um componente Session Bean Singleton que forneça um acesso fácil para estado compartilhado, assim como callbacks de startup/shutdown da aplicação.

Isso quer dizer que agora temos um novo tipo de Session Bean, diferente de um Session Beans Stateful ou Stateless, o Session Bean Singleton é um componente que é instanciado apenas uma vez por aplicação. Em casos onde o conteiner é distribuído para várias JVMs, cada aplicação irá possuir uma instância de um bean Singleton para cada JVM. O Session Bean Singleton é compartilhado e suporta acessos concorrentes.
Uma vez instanciado, o tempo de duração da instância do Session Bean Singleton é o mesmo do Contêiner onde ele foi criado. O que mantêm o estado entre as invocações do cliente mas o conteiner não é obrigado a preservar o estado do bean em um suposto crash ou shutdown no conteiner. Resumindo, Singleton Session Beans NÃO são passivados (é assim que se traduz ?).
Outra coisa, um Session Bean Singleton pode ser utilizado como um cliente web service. Somente um Session Bean Stateless ou Single podem fornece uma visão cliente de web service.

Eis o ciclo de vida de Singleton Session View.




  • O ciclo de vida de um session bean singleton inicia quando o conteiner invoca o método newInstance da classe Session Bean para uma instância do Singleton. A seguir, o conteiner realiza as injeções de dependência especificado pelas anotações na classe bean ou pela DD. O conteiner chama o método callback PostConstruct para o bean, se houver.

  • A instancia do SB Singleton esta agora pronta para delegar a chamada do método de negócio para qualquer cliente ou a chamada do conteiner para método callback disparado por timeout.

  • Quando a aplicação esta em shutdown, o conteiner invoca o método callback PreDestroy do Singleton, se houver. Isto finaliza o ciclo da instancia do session bean singleton.

Inicialização do Singleton

O conteiner decide o momento de instanciar o bean Singleton. Se o conteiner encontrar a anotação Startup na classe Singleton ou se o deployment descriptor estiver especificado startup na classe bean o conteiner DEVE instanciar durante o startup da aplicação. O exemplo abaixo inicializa a classe Singleton com estado compartilhado:

@Startup
@Singleton
public class SharedBean implements Shared {
private SharedData state;
@PostConstruct
void init() {
// initialize shared data
...
}
...
}



Outra novidade, é a possibilidade de criar uma cadeia de dependência entre múltiplos componentes Singleton em uma aplicação, através da anotação DependsOn.

@Target(value=TYPE)
@Retention(value=RUNTIME)
public @interface DependsOn


Esta anotação é utilizada quando precisamos iniciar uma instancia de um bean Singleton antes de instanciar outro objeto. Se um Singleton precisa invocar outro Singleton a partir do método PostConstruct, não é necessário uma ordenação via metadados (DD). Exemplo:

@Singleton
public class B { ... }
@DependsOn("B")
@Singleton
public class A { ... }


Essa anotação diz para o conteiner para garantir que o Singleton B é inicializado antes do Singleton A.
É possível incluir um ou mais valores no atributo value de DependensOn, onde cada valor especifica o ejb-name do Singleton destino utilizando a mesma sintaxe do atributo beanName() de @EBJ. Exemplo:

@Singleton
public class B { ... }
@Singleton
public class C { ... }
@DependsOn({"B", "C"}) // A só será iniciado após B e C serem iniciados
@Singleton
public class A { ... }



Isso garante que A só será iniciado após B e C serem iniciados. No caso de múltiplos valores, a ordem que os valores foram informados em value não garante a ordem de execução em runtime.

Ex,: Se o Singleton B possui uma dependência na ordenação no Singleton C, é a responsabilidade do Singleton B de capturar o que está explicito em seu metadado. Exemplo:

// 2 componentes Singleton empacotados em ejb-jars diferentes
// mas no mesmo arquivo .ear
// empacotado no arquivo b.jar
@Singleton
public class B { ... }
// packaged in a.jar
@DependsOn("b.jar#B")
@Singleton
public class A { ... }


Isto demonstra o uso do nome totalmente qualificado da sintaxe do ejb-name para referencia ao componente Singleton empacotado em um módulo diferente na mesma aplicação.

Lembra no EJB 3.0 para evitarmos nomes ambíguos
@EJB(beanName="netfeijao-ejb.jar#NetFeijaoEJB")

Em breve vou publicar mais sobre a nova especificação, para saber mais leia o artigo publicado no server-side, e a página da JSR..

  1. JSR 318: Enterprise JavaBeans 3.1
  2. Artigo na Server Side

O que podemos esperar do NetBeans 6.1 ?

sexta-feira, 18 de abril de 2008


Foi lançado recentemente o Release Candidate 1 do novo NetBeans 6.1, ao terminar e instalação, a primeira coisa que pude observar foi o aumento extraordinário de performance em comparação com a versão 6.0, esta aproximadamente 40% mais rápido em performance..

Desempenho

Abaixo segue dois prints mostrando o gerenciador de tarefas com o consumo do NetBeans 6.0 (203.736 K) e o NetBeans RC 1 (170.248 K), ainda o consumo é grande, mas com certeza já é uma grande melhoria.


Consumo de memória no NetBeans 6.0

Consumo de memória no NetBeans 6.1 RC.1



Entre as melhorias foram feitas diversas otimizações para redução do I/O e acesso ao disco, essa é a grande mágica que tornou a resposta muito mais rápida, principalmente em ambientes de rede. Foi alterado também o algoritmo para o parsing incremental no editor Java e JSP, aumentando a velocidade na resposta do auto completion, para este último foram feitas alteração no caching, gerenciamento de memória e nos algoritmos de alteração.
Outro recurso que consumia muito recurso da máquina era o pacote Visual Web, quem baixar a nova versão
irá notar uma grande diferença na abertura das páginas, menor consumo de memórias entre outras melhorias...


Biblioteca Compartilhada

Outra novidade bacana são as novas bibliotecas compartilhadas, antes se eu tinha que compartilhar bibliotecas em um ambiente multi usuário, isso só seria possível se eu criasse um projeto NetBeans Platform e "amarrasse" a biblioteca que criei a um Java SE Library Descriptor, e distruibui-se como um nbm, mas como poucos conhecem as funcionalidades do NetBeans Platform, isso se tornou uma prática pouco comum, na nova versão para utilizar uma biblioteca compartilhada basta no momento da criação do projeto (web, enterprise, java desktop) utilizar a opção "Use Dedicated Folder for Storing Libraries" ao clicar nessa opção, o projeto irá incluir as libraries no classpath.
















Para projetos antigos, é possível incluir as bibliotecas compartilhadas, para isso entre nas propriedades de um projeto, na categoria "Libraries" e clique no botão Browse... em Libraries Folder, basta escolher a pasta onde estão armazenadas as libs e clicar em Next, neste passo (Actions) é possível definir o comportamento das libs armazendas, podemos copiar as os arquivos jar para uma nova pasta de libraries (opção default), podemos utilizar o caminho relativo para os arquivos Jar, podemos utilizar o caminho absoluto para os arquivos Jar, ou utilizar a pasta selecionada mesmo.










































JavaDoc



Outra boa novidade é o suporte as tags do JavaDoc, quem é que nunca tentou o auto complete em um comentário, pois bem , agora isso é possivel.



AutoComplete em JavaDoc para classe



AutoComplete em JavaDoc para método.


Suporte ao MySQL

Desde que a Sun comprou a MySQL o suporte a este banco de dados no NetBeans só vem aumentando, na versão 6.1 já existe uma infra pronta para o MySQL, se você já possui um servidor do MySQL instalado basta registrar o servidor acessando a tab services e clicar com o mouse em cima de Database, e selecionar a opção "Register MySQL Server"(foto abaixo),e preencher o formulário, perceba que é só indicar o caminho da ferramenta de administração do MySql, que é possível dentro do NetBeans abrir e acessar a ferramenta de adminstração, mais facilidades na criação de novos bancos, ...





Registrar um servidor existente e configuração de Admistrator Tool

Editor de JavaScript

Outra ótima novidade são as diversas melhorias no editor de JavaScript, na verdade, todos os beneficios do novo editor do NetBeans 6.0 / 6.1 foram implementados no editor JavaScript, ainda de quebra é disponibilizado a documentação baseada no arquivo javascript.. Perfeito !!


Na nova versão ainda foram disponibilizadas diversas novidades como novos os componentes na biblioteca Ajax (WoodStock), melhorias em Ruby, e finalmente um Suporte ao framework Spring, entre outras novidades..

Baixe a nova versão no site netbeans.org ..

Esse post é para integrar o concurso de blog do NetBeans, no link http://www.netbeans.org/competition/blog-contest.html


Diversão Garantida !!!

L10N no SouJava

quarta-feira, 16 de abril de 2008











No dia 10 de Abril tive o prazer de dar uma palestra no auditório da Globalcode sobre o projeto de L10N que significa Localization, o 10 se refere as dez letras que existe entre a letra L e N.. Jefferson Prestes um dos colaboradores do Projeto e tradução da lista de notícias (newsletter) acabou ajudando bastante nesta apresentação.
No mesmo dia Greg Sporar, deu uma palestra sobre as novidades do NetBeans 6.1 (ainda Beta), sobre performance, sobre um plugin do NetBeans para o IReports, entre outras coisas..
Janice Campbell a Gerente Mundial de programas de tradução escreveu sobre a palestra neste link.
O material da apresentação se encontra no java.net, no projeto do soujava, e pode ser baixado neste link.
Sobre a palestra:
Falamos sobre o projeto de tradução IDE, que desde a versão 5.5 do NetBeans tupiniquim liderada por Michel Graciano, foi totalmente internacionalizada e organizada pela comunidade, ganhando um destaque no cenário internacional sendo considerado um padrão para os outros países em termos de organização e postura.

Benefícios

  • Ambiente Acadêmico.
Facilidade no aprendizado para os iniciantes cuja língua nativa seja diferente do inglês.
  • Software Governamental
Preferência por ferramentas no idioma oficial.
Muitas vezes sistemas com idioma estrangeiro é vetado.

  • NetBeans Platform
Impacto direto, pois a ferramenta traduzida é disponibilizada de graça para as empresas e desenvolvedores da plataforma.

Falamos sobre a tradução da Newsletter e da lista de discussão (nbdiscuss_pt@netbeans.org)

Como Participar
  1. Cadastre-se na lista de discussão pt_br@netbeans.org
  2. Apresente-se
  3. Colabore
  4. A Versão 6.1 em breve estará disponível
  5. Estamos ansiosos por sua contribuição!


Segue algumas fotos do evento.




No inicio da palestra.


















Sobre o projeto de tradução.



















Jefferson Prestes.




















E Greg Sporar.














As fotos foram cortesia da minha grande amiga Valéria Guimarães Mendonca vulgo "JavaGirl"...