quarta-feira, junho 27, 2007

Scrum para manutenção de sistemas

Este artigo contém uma resposta a uma dúvida enviada para a lista CMM-Brasil.

Dúvida:

"Aqui na empresa temos uma suite de produtos para a área Contábil / Depto Pessoal / Fiscal. Não desenvolvemos novos produtos. O que fazemos, é dar manutenção corretiva (qdo necessária), e na maior parte das vezes manutenção evolutiva, visto que os softwares devem se adequar às legislações municipais, estaduais e federais.Trabalhamos com um repositório de solicitações de novas implementações ou manutenções em funcionalidades já existentes. Estipulamos um prazo em torno de 40 dias para contemplar algumas solicitações acordadas em reuniões de planejamento, e no fim, geramos uma nova versão do produto e encaminhamos à nossos clientes.Nem sempre as solicitações acordadas no começo do planejamento são concebidas na versão do produto, pois no meio do caminho novas solicitações mais importantes (como falhas do sistema) acabam entrando e consumindo o tempo necessário para as outras solicitações.Alguém aqui do grupo trabalha neste mesmo esquema? Quais metodologias são mais indicadas para este cenário?

Iniciamos, sem muito sucesso a implantação do CMMI nível 2 no ano passado. Definimos e institucionalizamos o processo e a política de REQM, treinamos os profissionais, mas em algumas equipes o uso no dia a dia do processo definido não foi bem aceito. Acredito que pelo fato de requisitos entrarem, saírem ou serem alterados a todo instante do "sprint" de 40 dias, o processo tenha se tornado muito burocrático e pouco dinâmico.Citei equipes pelo fato de cada equipe trabalhar com um sistema específico, exemplo: Equipe A só trabalha com sistema de Folha de Pagamento, Equipe X só com sistema de Contabilidade .. e assim por diante.Alaguem tem algum comentário a fazer sobre isso?"

Minha resposta:

Um processo excelente para trabalhar nesse formato da empresa onde você está é o SCRUM. Ele lida exatamente com essas questões de gestão de backlog de produtos. No Scrum o spint é definido como sendo de 30 dias. Porém pode-se variá-lo de uma semana até 6 semanas.

O Scrum tem uma regra clara para permitir uma organização mínima do backlog e manter a sanidade da equipe: JAMAIS pode haver mudanças de prioridades durante uma iteração ou sprint. Mas, caso seja imprescindível alguma alteração, então o SCRUM dá uma alternativa: cancela-se o sprint atual e refaz TODO o planejamento de um novo sprint. É crucial deixar claro para os stakeholders do projeto que, desse modo, parar uma sprint só deve ocorrer em casos extremos.

No seu caso talvez seja melhor também, para reduzir o número de alterações de requisitos vindos dos stakeholders durante um sprint, reduzir o tempo de um sprint entre outro. Tente fazer a empresa e a equipe ser mais ágil. Que tal, por exemplo, reduzir seus sprints de 40 dias para 20 dias?

Marcadores:

Novas Referências interessantes sobre SCRUM

Encontrei mais algumas referências interessantes sobre Scrum e que facilitam seu entendimento no blog australiano Contrado.

Um dos produtos que ele oferece é um documento de 45 páginas onde ele explica o formato e o processo Scrum. Gostei da divisão em três fases que ele fez com o nome de Pregame, Game e PostGame. Podemos fazer uma analogia com o RUP e dizer que o Pregame corresponde à fase de Iniciação, o Game corresponde às fases de Elaboração e Construção e o PostGame corresponde à fase de Transição.

Ele também disponibilizou um documento em PDF que pode ser impresso para gerar as cartas do Planning Poker.

No site Contrado você também pode encontrar uma planilha Excel para ajudar no planejamento do SCRUM e também um cartão de referência que sumariza o Scrum em uma página.

Marcadores:

terça-feira, junho 26, 2007

Ferramenta open source para Refactoring de banco de dados LiquiBase

A equipe LiquiBase anunciou o lançamento da versão 1.0 da ferramenta open source LiquiBase. A ferramenta oferece funcionalidades para gerenciar mudanças e refactorings de bancos de dados.

Parece ser uma interessante e útil ferramenta que pode facilitar o trabalho de desenvolvimento iterativo de um banco de dados, especialmente estando este já em produção e necessitando de manutenções constantes de sua estrutura. A versão contendo a IDE com certeza ajudará a tornar a ferramenta LiquiBase mais popular entre desenvolvedores e DBAs.

A ferramenta suporta diversas funcionalidades, tais como:

- Formato de rastreamento de mudanças que suporta vários desenvolvedores e branches.

- Mais de trinta refactorings já criados, baseados no livro Refactoring Databases. Vide os refactoring suportados na página Supported Refactorings.

- Pode executar as atualizações diretamente, ou salvá-las para revisão dos DBAs.

- Pode fazer um rollback do banco de dados com base em datas, tags ou números de mudanças.

- Suporta os bancos de dados MySQL, PostgreSQL, Oracle e MS SQL Server.

- Pode ser executado como uma tarefa do Ant, um plugin do Maven ou um programa de linha de comando.

- Documentação extensa e completa incluindo um guia para início rápido e um manual.

- Várias funcionalidades estão planejadas para as próximas versões como: suporte a mais bancos de dados (DB2, Sybase, Derby and HSQL), um plugin para IDEs para facilitar graficamente o refactoring, refactoring adicionais e uma ferramenta para diff de bancos de dados entre outras.

Marcadores:

JBoss lança versão Alpha da JBoss Tools

JBoss Tools é um conjunto de plugins para a IDE Eclipse.

O conjunto de plugins inclui:

- o produto Exadel Studio
- Ajax4JSF
- RichFaces
- Hibernate Tools
- JBoss jBPM Tools
- Drools IDE
- JBoss Application Server Tools
- JBoss Seam Tools

Algumas das mais interessantes funcionalidades:

- Permite visualização WYSIWYG (What You See Is What You Get) de págins JSF e de Facelets.

- Suporta componentes de frameworks como JBoss Seam, JBoss Ajax4jsf e JBoss RichFaces.

- Capacidades de arrastar e colar entre o navegador de projetos, a palheta de componentes e as janelas de edição visual de páginas.

- Assistência de código extendida para projetos JSF e Seam.

- Suporte para adicionar com facilidade funcionalidades Ajax nos projetos usando JBoss RichFaces e Ajas4JSF.

Mais detalhes podem ser vistos no anúncio feito pela empresa JBoss.

Marcadores:

quinta-feira, junho 21, 2007

Métricas e feedback de projetos Java com Glean e Ant

Glean não é na realidade uma ferramenta. É um projeto que contém uma série de scripts Ant.


O Glean tem como objetivo gerar feedback sobre um projeto Java de forma ágil e sem muitas complexidades. Realmente é muito simples de configurar pois se baseia em poucos arquivos de configuração (inclusive com exemplos para facilitar a customização para um projeto específico).


O Glean possui scripts para as seguintes ferramentas:


- java2html

- javadoc

- javancss

- pmd

- beandoc

- checkstyle

- cobertura

- cpd

- dbdoclet

- doccheck

- emma

- findbugs

- jaranalyser

- jdepend

- junitreport

- pmd

- qalab

- schemaspy

- statcvs

- statsvn

- umlgraph-doc

- umlgraph-views


Você terá que baixar cada uma das ferramentas e configurá-la antes na sua máquina. Mas os scripts Ant do Glean farão o trabalho de gerar os relatórios em um formato padrão e sumarizado.





Marcadores:

segunda-feira, junho 18, 2007

Métricas de código com SourceMonitor

A ferramenta SourceMonitor é uma excelente opção para gerar métricas de código com velocidade e qualidade.

Ela possui as seguintes funcionalidades:

- Suporta diversas linguagens: C++, C, C#, VB.NET, Java, Delphi, Visual Basic (VB6) or HTML.

- Fornece métricas gerais do projeto bem como métricas específicas por classe e método.

- Oferece métricas tais como: número de arquivos, número de linhas de código, número de instruções, porcentagem de comentários, número de classes, métodos por classe, complexidade ciclomática, entre outas específicas por linguagem.

- Gera gráficos comparativos entre diferentes pontos do projeto bem como gráficos Kiviat.

- Pode ser usada através de sua interface gráfica (uma grande vantagem pois é extremamente simples de instalar e começar sua utilização) ou então através de um script de build como o Ant ou o NAnt.

A figura abaixo mostra um resumo das métricas de cada um dos arquivos de um projeto em C#:


A figura abaixo mostra as métricas detalhadas para um arquivo:


A figura abaixo mostra um gráfico de ou diagrama de Kiviat para um dos arquivos:


A figura abaixo mostra todos os métodos existentes dentro de um arquivo e suas respectivas métricas:


A figura abaixo representa uma das métricas existentes usando um gráfico de barra. Ela mostra a porcentagem representativa dos arquivos levando em consideração o número de linhas de código:

As três figuras abaixo mostram como são os relatórios HTML gerados através da integração com um ferramenta de build como o Ant, por exemplo:


Marcadores:


Veja as Estatísticas