Escolar Documentos
Profissional Documentos
Cultura Documentos
VITRIA
2014
VITRIA
2014
RESUMO
Software, por mais complexo que seja, no gera lucro ou valor at que esteja nas
mos de seus usurios. Para inibir riscos com perda de oportunidades no universo
web, a empresa objeto do estudo de caso deste trabalho evita os longos ciclos de
desenvolvimento tradicionais adotando as metodologias geis, fazendo uso das
prticas da XP, do Scrum e do Kanban. No entanto, durante o ciclo de
desenvolvimento, a execuo manual de tarefas importantes do processo de
desenvolvimento associa-se diretamente com o no cumprimento de prazos e a
baixa qualidade do software entregue. Diante desse cenrio, este trabalho realiza
uma pesquisa das boas prticas de desenvolvimento de software para efetuar a
entrega contnua de valor ao cliente e prope o desenvolvimento de um sistema
para realizar a automatizao dos processos com o auxlio de ferramentas testadas
e validadas h dcadas pela comunidade open source tais como Puppet, Git, Mina,
Jenkins, RSpec e Cucumber. O processo de entrega descrito atravs do padro
Pipeline de Implantao, permitindo a automatizao desde o desenvolvimento at a
entrega do software ao usurio final. O sistema desenvolvido tem o objetivo de
permitir que a equipe de desenvolvimento responda s mudanas de forma eficiente,
aumente a capacidade de gerar novas verses bem-sucedidas e de liber-las sob
demanda e de implantar o seu sistema em qualquer ambiente instantaneamente,
refletindo as mudanas de uma forma eficiente e com baixo custo.
Palavras-chave: Entrega Contnua de Software. Provisionamento de ambientes.
Integrao Contnua. Metodologias geis. Pipeline de Implantao.
LISTA DE QUADROS
LISTA DE FIGURAS
FIGURA 1 AGRUPAMENTO DAS PRTICAS DA XP. ......................................................... 20
FIGURA 2 FLUXO DE PROCESSO UTILIZANDO SCRUM. ................................................... 22
FIGURA 3 EXEMPLO DE UM GRFICO BURNDOWN CHAT. ............................................... 24
FIGURA 4 EXEMPLO DE UM QUADRO KANBAN............................................................... 25
FIGURA 5 EXEMPLO DE UM QUADRO KANBAN EM DESENVOLVIMENTO DE SOFTWARE....... 26
FIGURA 6 DIAGRAMA DE UM SISTEMA DE VERSO LOCAL............................................... 27
FIGURA 7 DIAGRAMA DE UM SISTEMA DE VERSO CENTRALIZADO. ................................. 28
FIGURA 8 DIAGRAMA DE UM SISTEMA DE VERSO DISTRIBUDO...................................... 29
FIGURA 9 QUATRO QUADRANTE DE TESTES DESCRITOS POR BRIAN MARICK. ................. 32
FIGURA 10 CICLO DO TDD ......................................................................................... 34
FIGURA 11 PROCESSO DE INTEGRAO CONTNUA COM O AUXILIO DE FERRAMENTAS. .... 35
FIGURA 12 - UM EXEMPLO DE MAPA DE FLUXO DE VALOR SIMPLES PARA UM PRODUTO ....... 37
FIGURA 13 - MUDANAS SE MOVENDO POR UM PIPELINE DE IMPLANTAO. ...................... 38
FIGURA 14 EQUIPES ENVOLVIDAS NO MOVIMENTO DEVOPS. ......................................... 41
FIGURA 15 - MAPA DO FLUXO DE VALOR DA EMPRESA OBJETO DESTE ESTUDO. ................. 44
FIGURA 16 MOVIMENTAO ATUAL DAS SOLICITAES NO QUADRO KANBAN. ................ 45
FIGURA 17 - FLUXO DO GERENCIAMENTO DO SISTEMA PELOS DESENVOLVEDORES. ........... 46
FIGURA 18 - DIAGRAMA DE CASO DE USO PRINCIPAL. .................................................... 50
FIGURA 19 - DIAGRAMA DE CASO DE USO CADASTRARGERAL. ........................................ 51
FIGURA 20 - DIAGRAMA DE CASO DE USO GERENCIARAMBIENTES................................... 52
FIGURA 21 - DIAGRAMA DE CASO DE USO GERENCIARSOLICITACOES. .............................. 53
FIGURA 22 - UTILIZAO DO PUPPET PELO SISTEMA OVENBIRD. ...................................... 57
FIGURA 23 - QUADRO KANBAN NO SISTEMA OVENBIRD. .................................................. 59
FIGURA 24 - FLUXO DO GERENCIAMENTO DO SISTEMA PELOS DESENVOLVEDORES APS A
APLICAO DAS SOLUES PROPOSTAS.
................................................................ 61
LISTA DE SIGLAS
CSS Cascading Style Sheets
CI Continuous Integration
CVS Concurrent Versions System
DSL Domain-Specific Language
ERB Embedded Ruby
SSH Secure Shell
UML Unified Modeling Language
HTML Hyper Text Markup Language
HTTPS Hypertext Transfer Protocol Secure
RCS Revision Control System
SCCS Source Code Control System
SGBD Sistema de Gerenciamento de Banco de Dados
SIC Sistema de integrao Contnua
SQL Structured Query Language
TDD Test Driven Development
URL Uniform Resource Locator
VCS Version Control System
XP Extreme Programming
WEB Wolrd Wide Web
SUMRIO
1. INTRODUO ...................................................................................................... 11
1.1 O PROBLEMA ................................................................................................. 12
1.2 FORMULAO DO PROBLEMA ................................................................... 13
1.3 HIPTESE ....................................................................................................... 13
1.4 OBJETIVOS..................................................................................................... 13
1.4.1 Gerais ........................................................................................................ 13
1.4.2 Especficos ................................................................................................ 14
1.5 JUSTIFICATIVA .............................................................................................. 14
1.6 METODOLOGIA .............................................................................................. 15
1.7 ORGANIZAO DA MONOGRAFIA .............................................................. 15
2 METODOLOGIAS DE DESENVOLVIMENTO EM AMBIENTE GIL ................... 16
2.1 MANIFESTO GIL .......................................................................................... 16
2.2 EXTREME PROGRAMMING........................................................................... 18
2.2.1 Prticas da XP ........................................................................................... 18
2.2.2 Adoo da XP............................................................................................ 20
2.3 SCRUM ............................................................................................................ 21
2.3.1 Papis e responsabilidades....................................................................... 23
2.3.2 Etapas da Sprint ........................................................................................ 23
2.3.3 Artefatos .................................................................................................... 24
2.4 KANBAN.......................................................................................................... 25
2.4.1 Kanban no desenvolvimento de software.................................................. 25
2.5 SISTEMA DE CONTROLE DE VERSO ....................................................... 26
2.5.1 Sistemas de Controle de Verso Locais ................................................... 27
2.5.2 Sistemas de Controle de Verso Centralizados ........................................ 28
2.5.3 Sistemas de Controle de Verso Distribudos ........................................... 29
2.6 GERNCIA DE CONFIGURAO ................................................................. 30
2.6.1 Provisionamento ........................................................................................ 31
2.7 TESTES AUTOMATIZADOS........................................................................... 32
2.7.1 Desenvolvimento guiado por testes .......................................................... 34
2.8 INTEGRAO CONTNUA ............................................................................. 35
2.9 PIPELINE DE IMPLANTAO ....................................................................... 36
2.9.1 Como criar um pipeline de implantao inicial .......................................... 39
11
1. INTRODUO
Com a globalizao e o aumento ao acesso banda larga, o mundo vive uma
interao em tempo real. Ideias, tendncias, necessidades, informaes, dentre
outros, navegam de continente a continente em uma velocidade jamais imaginada,
tendo o software como parte fundamental desse processo. Desenvolver software
nesse cenrio requer um processo onde uma ideia na mente do cliente vire cdigo
funcional e esteja disponvel para o usurio final de maneira rpida e confivel. O
tempo para efetuar o processo de entrega de software pode determinar o rumo dos
negcios diante da concorrncia.
Desde 1980, autores como Kent Beck, Martin Fowler, Paul Duvall, Ron Jeffries e
Dave Thomas, estudam prticas de desenvolvimento de software com o objetivo de
poder fornecer ao mundo alternativas melhores que as tradicionais, que so
altamente dirigidas por documentao. Conforme os 12 princpios do Manifesto gil
(2001), o software em funcionamento tem maior valor do que uma documentao
abrangente e software funcional a medida primria do progresso. Software que
no esteja em produo, fazendo o que deveria fazer, no tem valor algum para o
negcio.
Humble e Farley (2014, p. 3) fazem trs perguntas que permitem ter um enfoque em
aspectos do ciclo de vida de um software que, segundo eles, normalmente so
vistos como secundrios: O que acontece depois da identificao dos requisitos,
projeto, desenvolvimento e teste das solues? Como unir e coordenar todas essas
atividades para tornar o processo to eficiente e confivel quanto possvel durante
sua execuo? Como fazer desenvolvedores, testadores e pessoal de operao
trabalharem juntos de maneira eficiente?
O objetivo da automatizao de processos tornar a entrega de software confivel,
previsvel, com riscos quantificveis e bem entendidos, garantindo que quando for
preciso fazer alguma modificao, o tempo para realiz-las, coloc-las em produo
e em uso, seja o menor possvel e, que problemas sejam encontrados cedo o
bastante para que sejam fceis de corrigir. Isso permite que todos os envolvidos
possam executar tarefas (que at ento so manuais) de forma eficiente e repetvel,
melhorando a produtividade e a quantidade das entregas de valor dentro de um ciclo
12
13
14
1.4.2 Especficos
1.5 JUSTIFICATIVA
Software escrito que no entregue ao cliente no tem valor algum, mesmo que
seja uma aplicao das mais complexas que se pode codificar. A automao de
implantaes permite que novas entregas sejam feitas ou revertidas com o apertar
de um boto. Prticas tais como utilizar o mesmo processo de implantao em cada
ambiente e automatizar a gesto de ambientes, de dados e da infraestrutura so
projetadas para garantir que o processo de entrega seja excessivamente testado,
que a possibilidade de erro humano seja minimizada e que quaisquer problemas
(sejam funcionais, no funcionais ou de configurao) sejam descobertos muitos
antes de uma entrega (HUMBLE; FARLEY, 2014, p. 422).
Com o desenvolvimento de um software para a integrao de ferramentas,
automatizam-se os processos de forma que todos os envolvidos possam executar
tarefas (que at ento so manuais) com facilidade, aumentando a produtividade e a
quantidade de entregas de valor dentro de um ciclo, sendo possvel instalar o
sistema em qualquer ambiente instantaneamente, refletindo as mudanas para a
equipe de testes e o cliente de uma forma eficiente e com baixo custo.
15
1.6 METODOLOGIA
Inicialmente
ser
feita
uma
reviso
bibliogrfica
sobre
as
prticas
de
uma
viso
geral
das
metodologias
geis
das
prticas
de
16
17
fundamentais
que
diferem
daquelas
adotadas
pelos
processos
tradicionais de desenvolvimento.
Fowler (2005) descreve que a maioria dos projetos de software conta com trs
suposies chave que so justamente o que o processo gil de desenvolvimento
visa atender:
Pressman (2006, p. 61) levanta uma questo importante a partir das suposies:
como criar um processo que possa gerenciar a imprevisibilidade? A resposta, como
afirma Pressman, est na adaptabilidade do processo (as modificaes rpidas do
projeto e das condies tcnicas). Um processo gil, portando, deve ser adaptvel.
A
implementao
de
metodologias
geis
proporciona
desenvolvimento
cooperativo, que se baseia mais nas pessoas e suas iteraes em vez de grandes
esforos de planejamento e processo rgidos. Essas iteraes permitem a
visualizao contnua do desenvolvimento e o direcionamento do projeto para
atender seu propsito. Existem diversas metodologias geis de processo tais como
a Extreme Programming (XP), o Scrum e o Kanban que sero apresentadas a
seguir.
18
19
20
Fonte: http://www.hiflex.com.br/v1/2014/07/scrum-sustenta-se-sozinho
2.2.2 Adoo da XP
Segundo Teles (2004, p. 21), a XP uma metodologia gil voltada para projetos
cujos requisitos so vagos e mudam com frequncia, desenvolvimento de sistemas
orientados a objetos, equipes pequenas, preferencialmente at 12 desenvolvedores
e desenvolvimento incremental (ou iterativo), onde o sistema comea a ser
21
22
Fonte: http://calvinx.com/2014/05/22/why-scrum-why-agile-development/
23
2009, p. 24). Empresas com projetos que possuem altas taxas de mudanas se
beneficiaro com as prticas do Scrum. A seguir sero descritos resumidamente os
papis, as etapas da Sprint e os artefatos que compem o Scrum.
2.3.1 Papis e responsabilidades
Os papis e responsabilidades associados ao Scrum so:
Daily Meeting: reunio diria realizada pela equipe a cada dia da Sprint, que
tem como objetivo disseminar conhecimento sobre o que foi feito no dia
24
Sprint Review: realizada ao final de cada Sprint para que o Scrum Team
mostre o que foi alcanado e o Product Owner verifica se as condies
estabelecidas foram satisfeitas.
2.3.3 Artefatos
Os artefatos gerados pelo SCRUM so (VARASCHIM, 2009, p. 9):
Fonte: http://www.brq.com/metodologias-ageis/
25
Fonte: http://www.viso.com.br/produto/kanban-kanb-03-C149000.html
A transparncia que isso gera tambm contribui para a mudana cultural. O Kanban
expe gargalos, filas, variabilidade e desperdcio, tudo que impacta o desempenho
da organizao em termos de quantidade de trabalho de valor entregue e o tempo
de ciclo (tempo mdio para executar um item) necessrio para entreg-lo. Segundo
Anderson D. citado por Kningerg e Skarin (2009, p. 11), os primeiros estudos de
caso mostraram que o Kanban
26
Fonte: http://tatihelo.wordpress.com/2011/10/03/kanban/
27
programadores
desenvolveram
muito
tempo
VCSs
locais
que
Fonte: http://git-scm.com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Verso.
28
Fonte: http://git-scm.com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Verso
29
Fonte: http://git-scm.com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Verso
Muitos desses sistemas lidam muito bem com o aspecto de ter vrios repositrios
remotos com os quais se pode colaborar, permitindo que se trabalhe em conjunto
com diferentes grupos de pessoas, de diversas maneiras, simultaneamente no
mesmo projeto. Isso permite estabelecer diferentes tipos de fluxo de trabalho que
no so possveis em sistemas centralizados, como por exemplo o uso de modelos
hierrquicos.
30
31
2.6.1 Provisionamento
No caso dos servidores de redes de computadores, o processo de provisionamento
um conjunto de passos executveis que podem ser aplicados em uma imagem
inicial do sistema operacional para se ter tudo configurado corretamente (TAVARES,
2013). Esse conjunto de passos traz como benefcios a repetibilidade de gerar um
estado adequado do ambiente e uma documentao executvel dos procedimentos
para configurao.
Martin Fowler chama os servidores que dependem da ao humana de tentativa e
erro para provisionar de SnowflakeServer 2 , Essas mquinas geralmente no
possuem backup e, se houver alguma falha de disco, muito trabalho exigido para
colocar o projeto rodando em um computador novo.
Para Humble e Farley (2014, p. 290), o provisionamento de servidores comea
quando a nova mquina colocada em um datacenter, ligada alimentao e
rede; a partir deste ponto, praticamente todo o restante do seu ciclo de vida pode ser
feito remotamente por meio de automao.
Hoje, existe uma srie de ferramentas para provisionar uma mquina, cada uma
delas com seus diferentes benefcios e peculiaridades. Dentre as mais populares,
destacam-se:
Chef (http://www.opscode.com/chef);
Puppet (http://puppetlabs.com/puppet);
Ansible (http://www.ansibleworks.com/tech/);
Salt (http://saltstack.com/).
Todas elas esto contribuindo para a evoluo da comunidade DevOps (veja seo
2.10), e, apesar de competirem entre si, seu maior adversrio ainda a falta de uso
pelas empresas.
Sato (2013, p.60) relata uma caracterstica importante que essas ferramentas
especializadas possuem, a idempotncia. A idempotncia permite executar o cdigo
diversas vezes seguidas e as ferramentas s mudaro o que for necessrio. Se um
2
32
pacote estiver instalado, ele no ser reinstalado. Se um servio est iniciado, ele
no ser reiniciado. Diferentemente dos scripts proprietrios que s funcionam para
instalar e configurar o servidor pela primeira vez.
2.7 TESTES AUTOMATIZADOS
Muitos projetos contam com apenas testes manuais para a verificao da
conformidade dos seus requisitos funcionais e no funcionais. Desenvolver software
uma atividade complexa que envolve manipular uma grande quantidade de
elementos abstratos (TELES, 2004, p. 104). Enquanto codificam, desenvolvedores
tendem a verificar o programa, mas comum aparecer erros devido a situaes
completamente imprevistas ou devido a erros de lgica, falta de ateno,
interpretao incorreta de requisitos e, como consequncia, a ocorrncia de defeitos
uma realidade, sendo difcil ou impossvel evitar que aconteam durante o projeto.
Existem diversos tipos de teste que podem ser automatizados para garantir a
entrega de software com alta qualidade. Conforme Sato (2013, p.120), no existe
uma classificao ou terminologia amplamente aceita na indstria, mas a
comunidade gil geralmente se refere aos quatro quadrantes da Figura 9, descritos
por Brian Marick.
Figura 9 Quatro quadrante de testes descritos por Brian Marick.
33
34
Fonte: http://www.lagerweij.com/2014/04/04/outside-in-whatevers-at-the-core/
Os passos so:
O prximo passo codificar uma soluo para que o teste tenha sucesso ao
ser executado. Nesse momento, a primeira soluo encontrada pode ser
utilizada para atingir o objetivo;
No passo de refatorao, deve ser feita uma anlise no cdigo criado para
verificar se existe uma soluo mais otimizada que atinja o mesmo objetivo.
35
36
Cada alterao que tenha sido validada com sucesso pelo processo de integrao
contnua vira uma verso candidata a ir para produo e fica disponvel no
repositrio de artefatos. Essa prtica permite descobrir eventuais defeitos o mais
rapidamente possvel, acelerando a correo e diminuindo a probabilidade de que
pequenos erros se transformem em grandes dores de cabea no futuro.
2.9 PIPELINE DE IMPLANTAO
A Integrao Contnua abordada na seo anterior concentra-se principalmente no
time de desenvolvimento; ela precede o incio de vrios processos manuais, tais
como os testes exploratrios e a implantao do sistema. Conforme Humble e Farley
(2014, p. 105), h muitos gargalos no processo de entrega de software e comum
ver coisas tais como equipe de operaes esperando por documentao ou
correes, testadores esperando por verses boas de software, equipes de
desenvolvimento recebendo informaes sobre defeitos depois de j estarem
trabalhando h semanas em outras funcionalidades e a descoberta, j no fim do
processo de desenvolvimento, de que a arquitetura da aplicao no suporta os
requisitos no funcionais do sistema. Nesse cenrio, a equipe enfrenta um processo
de feedback longo, deixando o sistema impossibilitado de ir para produo.
O processo como um todo, de levar a funcionalidade da mente do cliente at o
usurio final, pode ser tratado com uma viso mais holstica, de ponta a ponta do
processo de entrega e modelado atravs de um fluxo de valor, mostrando uma
histria dos processos executado por uma organizao. O objetivo do fluxo de valor
mapear uma solicitao do cliente, do momento em que ela chega at que esteja
disponvel em produo (POPPERDIECK, 2011, p. 41). Conforme a Figura 12, todos
os passos para atender solicitao e o tempo mdio em cada passo pode ser
modelado, dando uma viso no tempo das atividades que agregam valor ao
processo e o tempo gasto em espera de outras atividades.
Essa espera entre um passo e outro pode se dar por exemplo, pelo tempo que se
leva para configurar e implantar o sistema em um ambiente. Em um processo
iterativo, a etapa de desenvolvimento incluiria vrios ciclos compostos de testes e
demonstraes e todo o processo seria repetido vrias vezes.
37
38
39
40
Minimizao dos efeitos de erros cometidos por pessoas por meio da mxima
automao do processo possvel, comeando com os estgios mais sujeitos a
erros;
Para que se consiga obter todos os benefcios do pipeline, Humble e Farley (2014,
p. 113) descrevem um conjunto de prticas, tais como:
Rollback uma ao que desfaz a ao corrente, fazendo com que todas as modificaes
realizadas at o momento sejam rejeitadas. Para mais informaes acesse:
http://pgdocptbr.sourceforge.net/pg82/sql-rollback.html
41
Fonte: http://en.wikipedia.org/wiki/DevOps
42
43
44
realizam
uma
estimativa
de
esforo
conforme
No final de cada Sprint, criada uma nova verso do SLV para o cliente e as
funcionalidades so implantadas em seu ambiente de produo.
45
46
47
48
49
necessrias
para
acesso
executando
instalao
automatizada.
50
51
caso
de
uso
GerenciarAmbientes
pode
ser
executado
pelos
atores
52
53
54
Em criptografia, SHA-1 uma funo hash de criptografia projetado pela Agncia dos
Estados Unidos de Segurana Nacional. Veja mais em: http://en.wikipedia.org/wiki/SHA-1.
55
TTULO
DESCRIO
1 Segurana
2 Navegabilidade
3 Multiacesso
4 Performance
5 Integrao
56
57
A ferramenta utilizada ser o Puppet, descrita na seo 5.2.1.9, uma das primeiras
ferramentas criadas desse tipo, bastante popular e com uma grande comunidade
contribuindo com contedos, tais como tutoriais e mdulos open source.
Pelo fato de estar trabalhando com um sistema base, o SLV, no h diferenas
complexas entre os ambientes dos clientes. As maiores mudanas concentram-se
em dados de configurao. Em cada projeto, dever ser possvel inserir informaes
de configurao dos ambientes.
Sero utilizados dois pacotes do Puppet, o Puppet Master e o Puppet Client, como
mostra a Figura 22.
Figura 22 - Utilizao do Puppet pelo sistema Ovenbird.
58
efetuado com a solicitao das configuraes ao Puppet Master pelo Puppet Client.
O Puppet Client solicita suas configuraes e aplica em seu ambiente.
As atualizaes dos ambientes sero efetuadas a partir desse momento,
automaticamente pelo Puppet Client em um intervalo determinado de acordo com as
configuraes ou pelo desenvolvedor ou gerente de projetos, atravs do boto
Provisionar ambiente disponibilizado no Ovenbird. Quando houver modificaes
nos ambientes, elas sero versionadas e adicionadas ao repositrio de cdigo pelo
desenvolvedor, logo aps, o Puppet Master ser atualizado com essas modificaes
e na prxima solicitao do Puppet Client, as alteraes sero enviadas ao seu
ambiente para que sejam aplicadas.
A Figura 22 tambm ilustra a utilizao da ferramenta Vagrant, apresentada na
seo 5.2.1.11, para a criao de ambientes de desenvolvimento. O Vagrant no
gerenciado pelo Ovenbird, mas a sua utilizao completa o processo de
automatizao de ambientes ao permitir usufruir dos recursos do Puppet. O Vagrant
permite a utilizao do Puppet Client em uma mquina virtual para solicitar as
configuraes ao Puppet Master. Com isso, o ambiente de desenvolvimento ser
idntico entre todos os desenvolvedores e ir refletir o ambiente de produo,
utilizando o mesmo sistema operacional e as mesmas configuraes.
Com a utilizao do Puppet, as configuraes necessrias para a criao de
qualquer ambiente (desenvolvimento, aceitao e produo), ficaro centralizadas
no Ovenbird. Dessa forma, no ser necessrio acessar um ambiente para efetuar
mudanas manualmente.
3.4.2 Proposta de soluo para a Gerncia de Solicitaes
Para cada SLV um projeto no Ovenbird ser criado para que as solicitaes sejam
agrupadas. Um novo projeto cria uma rea de trabalho onde as solicitaes sero
visualizadas. Esta rea de trabalho um reflexo do quadro Kanban mostrado na
Figura 16, com a incluso de novas colunas para permitir a visualizao de todas as
etapas inclusas no processo de entrega de software. O novo quadro pode ser
visualizado na Figura 23.
59
60
NOME
DESCRIO
Puppet
Automao de Infraestrutura
Vagrant
Git
Mina
Automao de Implantao
Jenkins
RSpec / Cucumber
Automao de Testes
Conforme Humble e Farley (2014, p. 106), isso permite que equipes de testes
possam criar e implantar seu prprios ambientes de testes com o apertar de um
boto. Desenvolvedores podem ver quais verses passaram por quais estgios do
processo de entrega e quais problemas foram encontrados, e gerentes podem
verificar e monitorar mtricas fundamentais como tempo de ciclo e qualidade de
61
Borland
62
Fonte: http://www.informit.com/articles/article.aspx?p=1621865&seqNum=2
63
Fonte: http://toolscloud.com/
64
Fonte: http://corporate.canaltech.com.br/dica/utilitarios/gerencie-equipes-e-tarefas-com-o-trello-e-de-adeus-aos-post-its/
GO
Gerncia de Tarefas
Integrao Contnua
Tools Cloud
Trello
Ovenbird
Provisionamento
X
X
Implantao Automatizada
Controle de Verso
Open Source
X
X
X
X
65
66
as
pessoas
designadas
pelo
cliente
para
descrever
as
funcionalidades.
Nos ambientes so efetuados vrias implantaes do sistemas, cada implantao
composta das solicitaes que esto disponveis. preciso saber qual verso do
sistema est em determinado ambiente. As solicitaes, de acordo com os
resultados dos testes, podem ser atualizadas. A verso de uma solicitao pode ser
alterada at o momento que ela vire uma verso candidata a ir para produo.
67
Classes
Ambiente
Cliente
Especialista
Membro
Atributos
Obrigatrio Descrio
tipo
Sim
ip
Sim
O endereo IP para
acesso ao Cloud Hosting
usuario
Sim
O usurio de acesso
senha
Sim
A senha de acesso
url
Sim
descricao
No
Descrio sobre o
ambiente
nome
Sim
Nome do cliente
telefone
Sim
Telefone de contato
Sim
E-mail de contato
razaoSocial
No
ocupacao
Sim
Gargo ocupado na
empresa
nome
Sim
Nome do especialista
telefone
No
Sim
descricao
No
Descrio sobre as
atividades do especialista
data
Sim
Sim
O status da implantao
versao
Sim
nome
Sim
Nome do projeto
Implantacao status
Projeto
urlRepositorio Sim
URL do repositrio de
cdigo fonte
Valor
Possveis
Aceitao /
Produo
sucesso /
erro
68
Classes
Solicitacao
Atributos
Obrigatrio Descrio
nome
Sim
O titulo da solicitao
descrio
No
A descrio da solicitao
a ser desenvolvida
dataInicio
No
No
dataFim
Sim
O status da validao
normal/
sucesso /
falhou
coluna
Sim
A posio no quadro
Kanban
1/2/3/4
/5/6/7/
8
dataInclusao
Sim
Data de cadastro
login
Sim
senha
Sim
tipo
Sim
codigo
Sim
data
Sim
status
Usuario
Valor
Possveis
Versao
Programad
or /
Gerente de
projetos /
Qualidade
69
70
71
72
5. PROJETO E IMPLEMENTAO
Este captulo apresenta o projeto e a implementao da ferramenta Ovenbird
proposta.
5.1 PROJETO
O projeto de um sistema constri representaes de programas coerentes e bem
planejadas que se concentram nos inter-relacionamentos das partes de alto nvel e
nas operaes lgicas envolvidas nos nveis inferiores (PRESSMAN, 2006, p. 207).
O projeto aborda a arquitetura, a interface com o usurio, os componentes
orientados a objetos e o banco de dados da ferramenta. A implementao apresenta
as tecnologias e linguagens utilizadas, as restries de implementao, a instalao
e funcionamento do prottipo.
5.1.1 Projeto de arquitetura
Segundo Pressman (2006, p. 208), a arquitetura de software de um programa ou
sistema computacional a estrutura ou estruturas do sistema que abrangem os
componentes
de
software,
as
propriedades
externamente
visveis
desses
73
74
75
76
77
78
79
80
http://www.martinfowler.com/eaaCatalog/activeRecord.html
81
82
http://37signals.com/
83
84
5.2.1.4 Jenkins
A ferramenta Jenkins (http://jenkins-ci.org/), trabalha em conjunto com o Git para
apoiar diversas atividades no ciclo de desenvolvimento de um projeto. Atualmente
essa ferramenta concentra-se em duas vertentes:
Uma das vantagens do Jenkins, que ele altamente extensvel, podendo ser
configurado para se comunicar com diversas outras ferramentas, como a da gerao
de uma nova verso de software.
Jenkins trabalha com uma abordagem na qual prioriza as sadas e as informaes
de retorno referentes a cada tarefa pr-determinada. Com a utilizao da integrao
contnua, o desenvolvedor ter um feedback referente ao cdigo que efetuou checkin conforme definido na configurao de cada tarefa no Jenkins (SATO, 2013, p.
128).
5.2.1.5 Mina
Mina (http://mina-deploy.github.io/mina/) uma ferramenta para a automatizao de
implantao de sistemas com um fluxo de trabalho baseado em tarefas. Ela gera um
procedimento inteiro como um script e executa-o remotamente em um servidor. Mina
cria somente uma sesso SSH por implantao, minimizando a sobrecarga da
conexo SSH.
Com a utilizao do Mina, utiliza-se o mesmo processo para efetuar implantaes
em qualquer ambiente de maneira consistente e confivel (MINA, [2013?]).
5.2.1.6 MySQL
O MySQL (http://www.mysql.com/) um sistema gerenciador de banco de dados
relacional, multiusurio, multitarefa e open source. atualmente um dos bancos de
85
dados mais populares, com mais de 10 milhes de instalaes pelo mundo. Possui
verses disponveis para vrios sistemas operacionais, entre eles o Linux, Windows
e FreeBSD.
Para utilizar o MySQL, necessrio instalar um servidor e uma aplicao cliente. O
servidor o responsvel por armazenar os dados, responder s requisies,
controlar a consistncia dos dados, bem como a execuo de transaes
concomitantes entre outras. O cliente se comunica com o servidor atravs da SQL. A
verso gratuita do MySQL chamada de Edio da Comunidade e possui o servidor
e uma interface grfica cliente (TONSING, 2006, p. 46).
5.2.1.7 Nginx
O Nginx (http://wiki.nginx.org/Main) um servidor web rpido, gratuito e open
source, com inmeras possibilidades de configurao para melhor performance.
conhecido por sua estabilidade, configurao simples e baixo consumo de recursos.
Escrito por Igor Sysoev em 2002 e teve sua primeira verso pblica liberada em
2004. Segundo uma pesquisa da W3techs.com, em maro de 2009, o Nginx usado
em 39,4% dos sites mais acessados no mundo (NGINX, [2004?])
5.2.1.8 Puma
Puma (http://puma.io/) uma pequena biblioteca que fornece um servidor HTTP 1.1
muito rpido e concorrente para aplicaes web Ruby. Criado por Evan Phoenix no
final de 2011, Puma foi construdo para a velocidade e paralelismo (PUMA, [2011?].
5.2.1.9 Puppet
O Puppet (http://puppetlabs.com/) uma ferramenta de automao de infraestrutura
utilizada por diversas empresas que precisam gerenciar milhares de mquinas
fsicas e virtuais ao redor do mundo, tais como as empresas MediaWiki Fundation,
Google, e Mozilla Fundation.
Os scripts do Puppet so escritos atravs de uma linguagem declarativa, baseada
em Ruby. Cada comando que se declara na linguagem uma diretiva, chamada de
recurso e, possvel definir um conjunto de recursos em um arquivo chamado de
86
10
http://www.martinfowler.com/bliki/DomainSpecificLanguage.html
87
sistema
operacional
utilizada
para
efetuar
implantao
durante
desenvolvimento do prottipo foi o Ubuntu Server 14.04 LTS, que uma distribuio
Linux. Ferramentas como o Mysql, Nginx e Jenkins, podem ser instaladas atravs do
gerenciador de pacotes do Ubuntu, o apt12.
11
12
http://www.unix.org/
http://linux.die.net/man/8/apt-get
88
suas
respectivamente.
informaes
atravs
dos
botes
Editar
Visualizar
89
90
91
Esta tela apresenta o formulrio para cadastro de um novo projeto, sendo tambm
utilizada para exibir as informao que podero ser atualizadas de acordo com a
ao executada (cadastrar, editar e visualizar). A tela possui trs sees
relacionadas. A primeira seo o formulrio para cadastro das informaes de um
projeto. A segunda seo, a lista de todos os ambientes j configurados para este
projeto. Nota-se que nesta seo h dois botes em destaque; o boto Configurar
que executa o caso de uso InstalarPuppet e o boto Provisionar, responsvel por
executar o caso de uso ProvisionarAmbiente e deixar o ambiente em um estado
adequado para implantao. A terceira seo a lista dos especialistas que iro
contribuir para o desenvolvimento da loja virtual.
A Figura 48 apresenta a tela para cadastro de um novo ambiente, sendo possvel a
escolha do tipo aceitao ou produo.
92
A partir dessa tela ser possvel acessar o quadro Kanban com as funcionalidades
clicando no boto Visualizar Projeto de cada projeto cadastrado.
A Figura 50 apresenta a tela do quadro Kanban onde ser possvel visualizar o
processo do pipeline de implantao.
93
94
95
96
da
utilizao
de
prticas
inclusas
nas
metodologias
geis
de
tais
como
testes
automatizados,
verificao
automtica
de
97
98
REFERNCIAS
AGUIAR, G. de F.; PEINADO, J. Compreendendo o Kanban: Um ensino
interativo ilustrado. Curitiba: Da Vinci, 2007
ASTELS, D.; MILLER, G.; NOVAK, M. Extreme Programming: Guia Prtico. Rio de
Janeiro: Campus, 2002. 333 p.
BEZERRA, Eduardo. Princpios de Anlise e Projeto de Sistemas com UML, So
Paulo: Campus, 2003.
BRANA, Hugo. Cubumber e Rspec, So Paulo: Casa do Cdigo, 2013.
CHACON, S.; STRAUB, B. Pro Git. San Francisco, California: Apress, 2014. 729 p.
DESENVOLVIMENTO GIL. Aprenda Sobre Desenvolvimento gil de Software.
2013. On-line. Disponvel em: <http://desenvolvimentoagil.com.br/>. Acesso em: 2
nov 2014.
DUVALL, Paul. Agile DevOps: O Achatamento do Processo de Reliase de
Software.
2012.
On-line.
Disponvel
em:
<http://www.ibm.com/developerworks/br/library/a-devops1/>. Acesso em: 17 out
2014
FADEL, A. L.; SILVEIRA, H. da M. Metodologias geis no Contexto de
Desenvolvimento de Software: XP, Scrum e Lean. 2010. 26f. Trabalho de
Concluso de Curso UNICAMP, Limeira, 2010.
FOWLER,
Martin.
Active
Record,
2010.
On-line.
Disponvel
em:
<http://www.martinfowler.com/eaaCatalog/activeRecord.html>. Acesso em: 23 nov.
2014.
FOWLER, Martin. Continuous Integration, 2006. On-line. Disponvel em:
<http://martinfowler.com/articles/continuousIntegration.html>. Acesso em: 09 nov.
2014.
FOWLER, Martin. Deployment Pipeline. 2013. On-line. Disponvel em:
<http://martinfowler.com/bliki/DeploymentPipeline.html>. Acesso em: 17 out 2014
FOWLER, Martin. The New Methodology, 2005. On-line. Disponvel em:
<http://www.martinfowler.com/articles/newMethodology.html#N8B>. Acesso em: 01
nov. 2014.
FUENTES, V. B. Ruby On Rails: Coloque sua aplicao nos trilhos. So Paulo:
Casa do Cdigo, 2014. 360 p.
GEORGE, M. RSpec: Crie especificaes executveis em Ruby. So Paulo:
Casa do Cdigo, 2014. 176 p.
HEIDI, Erika. Vagrant CookBook. Canada: Leanpub. 2014. 125 p.
HUMBLE, J.; FARLEY, D. Entrega Contnua: Como entregar software de forma
rpida e confivel. Porto Alegre: Bookman, 2014. 464 p.
HUMBLE, Jez. Continuous Delivery e o Movimento DevOps. 2011. On-line.
Disponvel em: <http://www.infoq.com/br/articles/jezhumble-continuous-deliverydevops/>. Acesso em: 10 out 2014.
99
Disponvel
em:
100
ANEXOS
Descrio: Esse caso de uso tem por objetivo o gerenciamento das solicitaes de
cada cliente, a criao dos ambientes para implantao do SLV e o gerenciamento
das informaes dos interessados no desenvolvimento do sistema, o cliente e a
equipe de desenvolvimento (usurio).
O Ovenbird possui os seguintes atores:
GerenteProjetos: representa a pessoa responsvel por controlar o fluxo de
desenvolvimento das solicitaes de cada cliente;
Desenvolvedor: responsvel pelo desenvolvimento das solicitaes bem
como a configurao dos ambientes e a implantao da loja;
Qualidade: responsvel por efetuar testes no ambiente de aceitao para
validar a entrega do desenvolvimento junto ao cliente.
101
102
103
Ps-condies: No se aplica.
Fluxo Principal:
1. O ator solicita alterar um usurio.
2. O ator informa os dados necessrios (nome, e-mail, descrio (opcional),
telefone, login, senha e tipo) para alterar o usurio.
3. O sistema verifica se as informaes so vlidas.
4. O sistema informa que o usurio foi alterado com sucesso.
Fluxo Alternativo:
3a. Dados necessrios invlidos
3a. 1 O sistema informa qual ou quais dados esto incorretos
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Caso de uso: ExcluirUsuario
Ator: GerenteProjetos
Pr-condies: O usurio deve estar cadastrado.
Ps-condies: No se aplica.
Fluxo Principal:
1. O ator solicita excluir um usurio
2. O ator informa o usurio a ser excludo.
3. O sistema verifica se o usurio existe.
4. O sistema pede confirmao para excluso do usurio.
5. O sistema informa que o usurio foi excludo com sucesso.
Fluxo Alternativo:
3a. Usurio informado no existe
3a. 1 O sistema informa que o usurio no existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Caso de uso: ConsultarUsuario
Ator: GerenteProjetos
Pr-condies: O usurio deve estar cadastrado.
104
Ps-condies: No se aplica.
Fluxo Principal:
1. O ator solicita consultar um usurio.
2. O ator informa o usurio a ser consultado.
3. O sistema verifica se o usurio existe.
4. O sistema mostra as informaes do usurio consultado.
Fluxo Alternativo:
3a. O usurio informado no existe
3a. 1 O sistema informa que o usurio no existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
105
106
Ps-condies: No se aplica.
Fluxo Principal:
1. O ator solicita alterar um cliente.
2. O ator informa os dados necessrios (nome, e-mail, razo social, telefone)
para alterar o cliente.
3. O sistema verifica se as informaes so vlidas.
4. O sistema informa que o cliente foi alterado com sucesso.
Fluxo Alternativo:
3a. Dados necessrios invlidos
3a. 1 O sistema informa qual ou quais dados esto incorretos
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Caso de uso: ExcluirCliente
Ator: GerenteProjetos
Pr-condies: O cliente deve estar cadastrado.
Ps-condies: No se aplica.
Fluxo Principal:
1. O ator solicita excluir um cliente
2. O ator informa o cliente a ser excludo.
3. O sistema verifica se o cliente existe.
4. O sistema pede confirmao para excluso do cliente.
5. O sistema informa que o cliente foi excludo com sucesso.
Fluxo Alternativo:
3a. Cliente informado no existe
3a. 1 O sistema informa que o cliente no existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
107
108
os
InstalarPuppet.
casos
de
uso
CadastrarAmbiente,
ProvisionarAmbiente
109
Habilita
os
botes
para
executar
os
casos
de
uso
110
111
112
113
114
CadastrarSolicitacao,
IniciarDesenvolvimento,
EnviarParaVerificacao,
AgruparSolicitacoesSprint,
ExecutarTestesAutomatizados,
DisponibilizarVersaoEmAceitacao e ImplantarVersaoEmProducao.
115
116
117
118
119
120
121
122
123
124
Descrio: Este caso de uso descreve o processo em que o SIC inicia o processo
de testes da solicitao informada.
Caso de uso: ExecutarTestesAutomatizados
Ator: SIC
Pr-condies: A solicitao deve estar na coluna Teste Unit.
Ps-condies: No se aplica.
Fluxo Principal:
1. O ator verificar se a solicitao est no repositrio de cdigo.
2. O ator faz o check-in no repositrio.
3. O ator executa os testes automatizados.
4. O sistema atualiza o status da solicitao em cada etapa dos testes.
125
126