CPqD Developer Suite
SPIN Campinas
Reunião #56 - Ferramentas de Software
03/set/2013
CPqD Developer Suite
CDS - custo
CPqD Developer Suite
Um conjunto de ferramentas
● de software livre e de baixo-custo,
● de qualidade comprovada,
● líderes de mercado em suas categorias,
● integradas para propiciar o
● desenvolvimento eficiente de
● software de qualidade.
CPqD Developer Suite
Gestão de Mudanças e Projetos Ágeis
atlassian.com/jira
JIRA
Projeto A
Projeto B
PA-101
PA-102
PB-25
PA-103
PB-26

PA-104
PB-27
Tíquetes totalmente customizáveis

PA-101
●
●
●
●
●
●
●
●

Resumo
Descrição
Criador
Responsável
Componentes
Versões
…
Campos
customizados...

Defeito
Estória
Melhoria
Tarefa Requisito
JIRA Ágil
JIRA no CPqD
Modelagem
sparxsystems.com/products/ea
Project
Browser

Toolbox

Barra de
Ferramentas

Área de
Desenho
Modelagem UML
Diagrama de
Sequência

ESTRUTURAIS

Diagrama de
Caso de Uso

Diagrama de
Classe

Diagrama de
Colaboração

Diagrama de
Objeto
Modelos

Diagrama de
Estado

COMPORTAMENTAIS

Diagrama de
Componente

Diagrama de
Atividade

Diagrama de
Distribuição
Edição simultânea e versionamento

Banco de
Dados

Subversion
Controle de Versões
subversion.apache.org
ohloh.net/repositories/compare
Se você não
abusa de
branches e
merges
Subversion no CPqD
search.cpan.org/dist/SVN-Hooks/
git-scm.com
“For those of you that have been living
under a rock, the single biggest change
in developers’ lives in the last decade is
Distributed Version Control.”
-- Joel Spolsky
http://www.joelonsoftware.com/items/2013/03/11.html
leve e rápido

trabalhe
desconectado

merges são
simples

revise e
publique

visualização
da história
"It is easy to shoot your foot off with git,
but also easy to revert to a previous foot
and merge it with your current leg."
-- Jack William Bell
“Initial git training”

devopsreactions.tumblr.com
“After reading the ‘Pro Git’ book”

devopsreactions.tumblr.com
Eclipse Annual Survey
search.cpan.org/dist/Git-Hooks/
Revisão de Código
gerrit.googlecode.com
Quem usa o Gerrit atualmente?
Gerrit Code Review
git commit

git commit --amend

commited

git fetch

approve
reject
comment

git push

open

submit

merged

abandon

abandoned
OK, a revisão de código ajuda a encontrar bugs
mais cedo. Mas ela não atrasa o processo de
desenvolvimento?
Sim. A revisão de código gasta aproximadamente
5% do tempo que se leva pra desenvolvê-lo.
5%, ok?

Só 5%, OK?!
Outros ganhos da revisão de código

mentoring

peering
Outros ganhos da revisão de código

O “medo da rejeição” estimula o
esforço individual
Outros ganhos da revisão de código

A “exposição” do trabalho de todos promove
a integridade conceitual da solução
Integração contínua
née
jenkins-ci.org
Integração Contínua
●

Código versionado

●

Builds automatizadas e rápidas

●

Testes automatizados

●

Build a cada commit

●

Resultados publicados

●

Produtos disponíveis

●

Deployment automatizado
Martin Fowler
Arquitetura
Jenkins
Job A

Job B

Build 01

Build 02

Build 01

Build 02

Build 03

Build 04

Build 03

Build 04

Job C

Job D

Build 03

Build 02

Build 04

Build 01

Build 02

Build 03

Build 04

Build 01

Build 05

Build 06

Build 07

Build 08

Build N
Informações sobre a execução do Job
● Histórico das builds
Arquitetura

Changes

Status

Build Master

C

Commands

ds

an
omm

Co

mm

and

s

Build Slave

Build Slave

Build Slave
Jenkins integrado ao CDS
AS

Repositorio de Artefatos
Construção

Automação de Teste

maven
egit

Qualidade
subversive

IDE

Integração Contínua

Gestão de Mudança

Controle de Versão

Revisão de Código

Controle de Versão
Usuários Jenkins
Jenkins no CPqD
Repositório de artefatos
sonatype.org/nexus
Old style dependency management

central
dev.java.net
SVN
/lib/*.jar

...
Internet
Maven style dependency management

releases

internal
releases
third
parties
external
releases

central
dev.java.net
...

Internet
apache-snapshots
codehaus-snapshots

snapshots

external
snapshots
internal
snapshots

...
Nexus
Testes
testlink.org
Organização dos Testes

Projeto
RQ

RQ

RQ

RQ

T.Plan

T.Plan

TC

TC

TC

T.Suite

TC

TC

TC

T.Suite

TC

TC

TC

T.Suite

...
Plano de Testes e relatórios

Test Plan

build

Test Case
Test Case

build
Test Case
Test Case

build
Test Case
seleniumhq.org
Selenium IDE

<HTML>
Java
PHP
Perl
Python
Ruby
C#
Arquitetura do Selenium

Selenium
Test

Selenium
Hub

Web
Apps
Selenium
Test
Inspeção contínua
sonarqube.org
Inspeção contínua
●

Análise estática automatizada de código
○
○

●

Dezenas de métricas de qualidade
○

○

●

Disparada pelo Jenkins
Java, C/C++, C#, PHP, Javascript, XML, etc.

Complexidade, documentação, cobertura de testes, duplicação
de código, coding standards, etc.
Métrica fora dos limites aceitáveis quebra a build.

Apresentação multidimensional dos resultados
○

Hotspots, tendências, issue drilldown, timeline, etc.
Dashboard e tendências
Issue Drilldown
Timeline
Hotspots
Eclipse plugin
Por que coletar métricas?
●

É preciso medir pra saber o que melhorar
○

Sonar is a quality profiler

●

É preciso medir pra poder convencer

●

“Teoria da Janela Quebrada”

●

“É melhor prevenir do que remediar”

●

Planejar e priorizar

●

Controlar o débito técnico
Sonar no CPqD
Integrações
Integrações

LDAP
Gustavo Chaves
gustavo@cpqd.com.br
(19) 3705 7003

Obrigado!
www.cpqd.com.br

Cds overview para o SPIN Campinas #56