sábado, agosto 16, 2008

Sprint Review Meeting

  • No Sprint Review Meeting, participam todos os envolvidos no projeto;
  • É avaliado principalmente se aequipe atingiu o objetivo do sprint;
  • Além disso, é avaliado se as funcionalidades do Product Backlog para aquele Sprint foram implementadas.

Daily Scrum

  • O Daily Scrum é uma rápida reunião diária, onde participam o Scrum Máster e o Scrum Team;
  • Sugere-se que seja feita pela manhã, para priorizar as tarefas diárias.
  • No Daily Scrum, a equipe é responsável por responder a estas questões:
- O que você fez ontem?
- O que você fará hoje:
- Há algum impedimento no seu caminho?
  • Os impedimentos devem ser tratados depois do Daily Scrum, somente com as pessoas envolvidas no problema e/ou podem auxiliar.

Sprint Backlog

  • Lista de tarefas que o Scrum Team se compromete a entregar em um Sprint.
  • São extraídos do Product Backlog, conforme a priorização do Product Owner e a percepção da equipe sobre o tempo necessário para fazer as implementações;
  • Cabe à equipe a quantidade de itens que serão levados para o Sprint Backlog;
  • Durante o Sprint, o Scrum Master atualiza o Sprint Backlog, refletindo as tarefas completadas e quanto tempo será necessário para completar aquelas que ainda não estão prontas. A estimativa das tarefas que ainda não estão prontas são calculadas e plotadas em um gráfico, chamdo Sprint Burndown Chart.
  • Durante um Sprint, novos requisitos não são incluídos. Mudanças são aceitas, porém, ficarão para um outro Sprint.

Sprint Planning Meeting

  • Reunião que estão presentes o Scrum Master, o Product Owner e o Scrum Team;
  • O Scrum team e o Product Owner definem um objetivo para o Sprint, que será uma breve descrição daquilo que se pretende no Sprint.
  • O Product Owner descreve as funcionalidades de maior prioridade;
  • A equipe de desenvolvimento as perguntas necessárias para quebrar estas funcionalidades em tarefas técnicas; estas tarefas formarão o Sprint Backlog;
  • As funcionalidades implementadas no Sprint serão apresentadas e discutidas no Sprint Review Meeting, onde será avaliado o sucesso do Sprint em questão.
  • Após o Sprint Planning Meeting, a equipe se reúne e define o que ela é capaz de desenvolver dentro do Sprint que será iniciado. Isso pode incluir negociação com o Product Owner, mas sempre respeitando a capacidade de produção da equipe.

Product Backlog

  • Conjunto de funcionalidades desejadas;
  • O product backlog, no início do projeto, não precisa estar completo; pode ser iniciado com as funcionalidades mais óbvias.
  • Durante o Sprint Planning Meeting, o product owner prioriza as funcionalidades; a equipe então divide estas funcionalidades em tarefas. As funcionalidades definidas pelo Project Owner são transferidas para o Sprint backlog.

Papéis no Scrum

Product Owner:

  • Pode ser o cliente ou alguém que represente o cliente;
  • Define as funcionalidades no Product Backlog e define as prioridades nas Sprint Planning Meetings;

Scrum Team:

  • É a equipe de desenvolvimento;
  • Não existe papel funcional, como analista, programador, designer, etc.: todos trabalham juntos para atingir o objetivo final.
  • Geralmente, são times com até 10 pessoas;
  • Pode-se utilizar Scrum com times maiores, mas neste caso, utiliza-se o termo Scrum of Scrums: várias equipes Scrum menores.

Scrum Master:

  • É uma pessoa que tem experiência na metodologia Scrum, e vai assegurar que toda a equipe esteja utilizando o método corretamente;
  • Ele também protege a equipe, de forma que a equipe não se comprometa com mais tarefas do que pode realizar;
  • Atua como facilitador no Daily Scrum, e tem a responsabilidade de encontrar soluções para os problemas apontados nestas reuniões.

Definição de Scrum

  • Metodologia de gerenciamento de projetos;
  • Projetos são divididos em ciclos ( sprints ), geralmente de um mês;
  • As funcionalidades são mantidas em uma lista chamada Product Backlog;
  • No início de cada sprint, a equipe se reúne , em uma reunião chamada Sprint Planning Meeting. Nesta reunião, o Product Owner prioriza os itens do Product Backlog e a equipe seleciona as atividades que será capaz de implementar.
  • Estas tarefas depois são transferidas do Product Backlog para o Sprint Backlog.
  • A cada dia do sprint, a equipe se reúne, para identificar o que foi feito no dia anterior, resolver problemas e priorizar o trabalho do dia.que se inicia.
  • Ao final do sprint, a equipe se reúne e apresenta as funcionalidades implementadas em um Sprint Review Meeting.
  • É feita uma retrospectiva e o trabalho passa para o sprint seguinte.

sexta-feira, abril 18, 2008

Configurando Postgresql em rede

Por padrão, o servidor de banco de dados Postgresql desabilita o acesso remoto, isto é, só é possível manipular seus dados do servidor onde ele está instalado. Questões de segurança.

Para alterar e definir quais são os computadores e redes que podem acessar o banco de dados, é necessário alerar dois arquivos: o pgba_conf e e o postgresql.conf

No meu caso, minha rede doméstica, não tenho preocupações quanto à segurança, então, se você também não tem, você pode deixar qualquer um acessar o banco de dados fazendo assim:

  • No pgba_conf, localize o trecho abaixo:
# This file controls: which hosts are allowed to connect, how clients
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access. Records take one of these forms:
#
# local DATABASE USER METHOD [OPTION]
# host DATABASE USER CIDR-ADDRESS METHOD [OPTION]
# hostssl DATABASE USER CIDR-ADDRESS METHOD [OPTION]
# hostnossl DATABASE USER CIDR-ADDRESS METHOD [OPTION]

e insira mais uma linha assim:

host all all 0.0.0.0 0.0.0.0 trust

No arquivo postgresql.conf:

  • Localize a linha abaixo:
#listen_addresses = 'localhost'

  • e substitua-a por

listen_addresses = '*'

reinicie o servidor, e agora ele está apto a receber conexões.

sábado, março 08, 2008

DBExpress não sabe contar

No Delphi, eu estava tentando executar uma query, e logo abaixo, eu testava quantos registros a query retornou. A Query simples, uma join de duas tabelas pequenas. Meu sistema é desenvolvido utilizando banco de dados SQL Server, acessado através de componentes DBExpress. Pra qualquer porcaria ( BDE, ADO, Zeos, etc.. ) o recordcount funciona. Menos para DBExpress. Quando eu tento chamar o método Recordcount do TSQLQuery, ele berra, avisando que a operação não é suportada.

Segundo esta explicação da Borland, o recordcount não pode ser obtido se:
- você está executando uma stored procedure;
- você está executando uma view;
- você está executando um script que contém joins entre tabelas;

Resumindo: recordcount never more. Qual sistema que não tem stored procedure, view ou joins ?

Boa sorte desenvolvedor Delphi. Você vai precisar.

quinta-feira, março 06, 2008

Fluent Interfaces, by Guilherme Chapiewski

Não domino o assunto, nem tampouco me atrevo a escrever muito sobre isso aqui, mas Fluent Interfaces é uma forma de escrever código.

É um esforço para criar interfaces mais intuitivas, onde outros analistas que vão utilizar o seu método possam facilmente entender a regra de negócio a qual o seu método está inserido e/ou pretende resolver.

A abordagem é interessantíssima, embora não aplicável a todos os casos de software.


Guilherme Chapiewski escreveu artigos interessantes sobre este assunto no blog dele, inclusive, implementou uma classe de exemplo, uma API para envio de e-mails, utilizando Fluent Interfaces.

Link para os artigos:


Refatorando para Fluent Interface
Um exemplo prático de Fluent Interface

Delphi: showmodal em aplicação MDI

O padrão MDI é um tipo de interface onde múltiplos documentos podem ser abertos dentro de uma única janela. Cada um desses documentos, por sua vez, abrem-se cada qual em uma
janela, dentro da janela "pai". Um exemplo de aplicação que usa um padrão
desse tipo é o Adobe Photoshop.

A vantagem do padrão MDI é que ele dá a possibilidade do usuário utilizar duas ou mais janelas, comparando dados entre elas. Uma desvantagem é que a proliferação de muitas janelas abertas pode deixar o sistmea lento e o usuário perdido.

Uma dúvida muito comum em aplicações Delphi que utilizam MDI é quando o analista tem que recorrer ao recurso de janelas modais, aquelas que bloqueiam o usuário enquanto a janela está ativa. No delphi, o formstyle da janela que vai ser modal tem que ser fsNormal, uma janela comum, e a janela não pode estar visível, portanto, a propriedade visible tem que estar configurada para False.

A dica de ouro é que estas propriedades setadas em design time não funcionam; quando você for executar o showmodal, ocorrerá um erro de excessão dizendo que a janela não pode ser modal. A solução é fazer tudo em runtime:


application.createform(TfrmLocalizarPessoa,frmLocalizarPessoa);
frmLocalizarPessoa.Visible:=false;
frmLocalizarPessoa.FormStyle:= fsNormal;
frmLocalizarPessoa.ShowModal;



Bons códigos.

terça-feira, março 04, 2008

Alterar senha do Postgresql no Ubuntu

Quando instalamos o server Postgresql no Ubuntu, onde a forma mais fácil é via synaptic, ele não pede a senha inicial do usuário postgres.

Para acessar o banco, primeiro, você tem que configurar esta senha. Os códigos abaixo vão auxiliar você nesta tarefa:


Entre no diretório /etc/init.d

cd /etc/init.d/

Logue no postgresql usando a conta root:

sudo -u postgres psql template1

Depois quando estiver no psql digite o seguinte comando SQL:

ALTER USER postgres WITH PASSWORD ‘***password***’;

onde ***password*** é a sua nova senha.

Saia do console do postgresql digitando \q

Pronto. Senha alterada, logue no Postgresql via PgAdmin
ou o Aqua Data Studio e boa diversão.

terça-feira, fevereiro 19, 2008

OpenID: enfim, uma solução para autenticação

Orkut, Msn, GMail, Yahoo, Provedor de Internet.. enfim, são tantos que você tem que usar um "Gerenciador de Senhas" para lembrá-los de tudo.

Há 10 anos atrás tinhamos no máximo uma ou duas senhas. Hoje, podemos ter dezenas delas. A típica janela solicitando login e senha já faz parte da nossa vida, e não vai nos deixar tão cedo.

A biometria surgiu para substituir as senhas em ambientes críticos, e foi uma ótima solução para isso. Mas é uma solução cara e só é possível utilizá-la onde a presença física é necessária para a autenticação.

Um outro esforço para eliminar o número de logins e senhas é uma iniciativa conjunta de diversas emprsesas denominado OpenID. Com o OpenID, você tem um login único, onde pode autenticar-se em diversos sites. Ambos vão compartilhar da mesma OpenID. Uma solução prática, que está ganhando força e deve se tornar o padrão de autenticação na web, graças a Deus.

O funcionamento é simples: você escolhe um provedor de OpenID (existem vários, todos free ) , cadastra-se e ele vai te fornecer um endereço OpenID.

Mais detalhes no site http://openid.net/

sexta-feira, fevereiro 08, 2008

Java, Ubuntu e Compiz/Beryl

Instalei o Ubuntu no meu desktop, configurei o Compiz/Beryl para dar uma animada nas telas, tudo muito lindo, tudo muito legal, com direito a telas pegando fogo e tudo.

Instalei o Java 6.0, e em seguida, instalei o Mercury Messenger, um client de MSN para linux com direito a webcam, winks e emoticons.

Abri o Mercury, e nada além de uma tela vazia, somente as bordas da tela estavam visíveis.

Achei que fosse bug do aplicativo, então deixei pra lá,de uma tela vazia, somente as bord e continuei a configurar e instalar meu Ubuntu. Baixei o Oracle XE, instalei, baixei o Oracle SQL Developer, instalei, e quando fui rodar o SQL Developer, novamente, a tela não apareceu, somente as bordas com uma janela em branco.

Logo, só podia ser pau na JVM.

Pesquisando um pouco na net, encontrei a solução, simples, graças a Deus: atualizar para a JVM 6.1, que já contém um fix para este problema.

O bug é relatado no Bug ID 6429775, no sistema de bugs da Sun. O problema é relacionado ao Compiz.

terça-feira, janeiro 29, 2008

Foco no modelo de negócio

Domain Driven Design é uma nova ( não tão nova assim ) abordagem para arquitetura de sistemas.

Softwares são criados para automatizar processos do mundo real ou para prover soluções para reais problemas das corporações. Logo, para criar um software de qualidade, você tem que primerio entender o problema que o software pretende solucionar, você tem que entender o Domínio do Negócio.

E é aí onde o software deve começar: no Domínio. E quem conhece o domínio do negócio? Os analistas? o arquiteto de sistema? o DBA? Nenhum deles. Para isso, há a figura do Especialista do domínio, que no caso, é quem está no dia a dia do problema a ser solucionado. Conversando com o Especialista do Domínio o arquiteto de sistemas será capaz de entender e modelar o Domínio.

Isso significa que você não vai começar projetando uma base de dados, uma interface de usuário, métodos de persistência ou coisa parecida.

Estou estudando o assunto ainda, e em breve terei postagens mais esclarecedoras.

Para saber mais:


http://domaindrivendesign.org/

Livro gratuito: Domain Driven Design Quickly


Post de Allison Vale sobre Domain Driven Design


Posts de Guilherme Chapiewski sobre DDD