Escolar Documentos
Profissional Documentos
Cultura Documentos
VITÓRIA
2014
LEANDRO SOUZA NUNES
VITÓRIA
2014
LEANDRO SOUZA NUNES
BANCA EXAMINADORA
Software, por mais complexo que seja, não gera lucro ou valor até que esteja nas
mãos de seus usuários. A empresa objeto do estudo de caso deste trabalho está
sediada em Vitória ES e é especializada em soluções para lojas virtuais (SLV) que
são o ponto de partida para o atendimento de um novo cliente. Para inibir riscos com
perda de oportunidades no universo web, a empresa evita os longos ciclos de
desenvolvimento tradicionais adotando as metodologias ágeis, fazendo uso das
práticas da XP, do Scrum e do Kanban. No entanto, durante o ciclo de
desenvolvimento a execução manual de tarefas importantes do processo de
desenvolvimento associa-se diretamente com o não cumprimento de prazos e a
baixa qualidade do software entregue. Diante desse cenário, este trabalho realiza
uma pesquisa das boas práticas de desenvolvimento de software para efetuar a
entrega contínua de valor ao cliente e propõe o desenvolvimento de um sistema
para realizar a automatização dos processos com o auxílio de ferramentas testadas
e validadas há décadas pela comunidade open source tais como Puppet, Git, Mina,
Jenkins, RSpec e Cucumber. O processo de entrega é descrito através do padrão
Pipeline de Implantação, permitindo a automatização desde o desenvolvimento até a
entrega do software ao usuário final. O sistema desenvolvido tem o objetivo de
permitir que a equipe de desenvolvimento responda às mudanças de forma eficiente,
aumente a capacidade de gerar novas versões bem-sucedidas e de liberá-las sob
demanda e de implantar o seu sistema de loja virtual em qualquer ambiente
instantaneamente, refletindo as mudanças de uma forma eficiente e com baixo
custo. Este sistema foi desenvolvido utilizando-se o paradigma da orientação a
objetos e a linguagem de notação UML – Unified Modeling Language para a
modelagem. O protótipo foi desenvolvido na linguagem de programação Ruby, o
framework RubyOnRails e o SGBD MySQL. Este trabalho contribuiu para o
entendimento do mapa do fluxo de valor dos processos realizados na empresa do
estudo de caso, documentou os requisitos que devem ser atendidos por um sistema
de apoio à automatização da entrega de software em ambiente ágil de
desenvolvimento e o protótipo desenvolvido demonstrou a viabilidade da proposta.
QUADRO 1 – REQUISITOS NÃO FUNCIONAIS. ................................................................... 55
QUADRO 2 – FERRAMENTAS UTILIZADAS. ....................................................................... 60
QUADRO 3 – COMPARATIVO OVENBIRD X GO X TOOL CLOUD X TRELLO. ........................ 64
QUADRO 4 – DICIONÁRIO DE DADOS DO SISTEMA OVENBIRD............................................ 67
QUADRO 5 – DICIONÁRIO DE DADOS DO SISTEMA OVENBIRD............................................ 68
LISTA DE FIGURAS
CI – Continuous Integration
XP – Extreme Programming
1. INTRODUÇÃO ...................................................................................................... 11
1.1 O PROBLEMA ................................................................................................. 12
1.2 FORMULAÇÃO DO PROBLEMA ................................................................... 13
1.3 HIPÓTESE ....................................................................................................... 13
1.4 OBJETIVOS..................................................................................................... 13
1.4.1 Gerais ........................................................................................................ 13
1.4.2 Específicos ................................................................................................ 14
1.5 JUSTIFICATIVA .............................................................................................. 14
1.6 METODOLOGIA .............................................................................................. 15
1.7 ORGANIZAÇÃO DA MONOGRAFIA .............................................................. 15
REFERÊNCIAS ......................................................................................................... 97
ANEXOS.................................................................................................................... 99
11
1. INTRODUÇÃO
Desde 1980, autores como Kent Beck, Martin Fowler, Paul Duvall, Ron Jeffries e
Dave Thomas, estudam práticas de desenvolvimento de software com o objetivo de
poder fornecer ao mundo alternativas melhores que as tradicionais, que são
altamente dirigidas por documentação. Conforme os 12 princípios do Manifesto Ágil
(2001), o software em funcionamento tem maior valor do que uma documentação
abrangente e software funcional é a medida primária do progresso. Software que
não esteja em produção, fazendo o que deveria fazer, não tem valor algum para o
negócio.
Humble e Farley (2014, p. 3) fazem três perguntas que permitem ter um enfoque em
aspectos do ciclo de vida de um software que, segundo eles, normalmente são
vistos como secundários: O que acontece depois da identificação dos requisitos,
projeto, desenvolvimento e teste das soluções? Como unir e coordenar todas essas
atividades para tornar o processo tão eficiente e confiável quanto possível durante
sua execução? Como fazer desenvolvedores, testadores e pessoal de operação
trabalharem juntos de maneira eficiente?
1.1 O PROBLEMA
1.3 HIPÓTESE
1.4 OBJETIVOS
1.4.1 Gerais
1
DevOps é um movimento que busca difundir a colaboração entre os envolvidos no
desenvolvimento de software e será abordado na seção 2.10.
14
1.4.2 Específicos
1.5 JUSTIFICATIVA
Software escrito que não é entregue ao cliente não tem valor algum, mesmo que
seja uma aplicação das mais complexas que se pode codificar. A automação de
implantações permite que novas entregas sejam feitas ou revertidas com o apertar
de um botão. Práticas tais como utilizar o mesmo processo de implantação em cada
ambiente e automatizar a gestão de ambientes, de dados e da infraestrutura são
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, não funcionais ou de configuração) sejam descobertos muitos
antes de uma entrega (HUMBLE; FARLEY, 2014, p. 422).
1.6 METODOLOGIA
Embora cada envolvido tivesse suas próprias práticas e teorias sobre como fazer um
projeto de software ter sucesso, cada qual com as suas particularidades, todos
concordavam que, em suas experiências prévias, um pequeno conjunto de
princípios sempre parecia ter sido respeitado quando os projetos davam certo.
Com base nesses princípios surgiu o Manifesto Ágil (2001), Ele valoriza a
importância da interação entre os envolvidos e a entrega de software de valor ao
cliente a curto prazo e conta com doze princípios. Os quatro valores defendidos pelo
manifesto ágil são:
Fowler (2005) descreve que a maioria dos projetos de software conta com três
suposições chave que são justamente o que o processo ágil de desenvolvimento
visa atender:
Pressman (2006, p. 61) levanta uma questão importante a partir das suposições:
como criar um processo que possa gerenciar a imprevisibilidade? A resposta, como
afirma Pressman, está na adaptabilidade do processo (as modificações rápidas do
projeto e das condições técnicas). Um processo ágil, portando, deve ser adaptável.
A XP foi uma das primeiras metodologias ágeis que revolucionou a forma como
software era desenvolvido (SATO, 2013, p. 116), diferenciando da forma tradicional
de desenvolvimento de software. Foi proposta por Kent Beck e publicada em seu
livro Extreme Programming Explained em 1999.
2.2.1 Práticas da XP
Fonte: http://www.hiflex.com.br/v1/2014/07/scrum-sustenta-se-sozinho/
2.2.2 Adoção da XP
Segundo Teles (2004, p. 21), a XP é uma metodologia ágil voltada para projetos
cujos requisitos são vagos e mudam com frequência, desenvolvimento de sistemas
orientados a objetos, equipes pequenas, preferencialmente até 12 desenvolvedores
e desenvolvimento incremental (ou iterativo), onde o sistema começa a ser
implementado logo no início do projeto e vai ganhando novas funcionalidades ao
longo do tempo.
21
2.3 SCRUM
O Scrum teve sua definição em 1995 por Ken Schwaber, com o objetivo de
consolidá-lo como um método de desenvolvimento de software. No entanto, o termo
Scrum foi utilizado pela primeira vez para o desenvolvimento de software por Jeff
Sutherland em 1991.
Fonte: http://www.hatanaka.com.br/info/artigo/gerenciamento-de-projetos/ciclo-de-vida-scrum.php
Segundo Ken Schwaber citado por Varaschim (2009, p. 5), a Sprint é definida como
um ciclo de desenvolvimento curto em que o time foca em atingir o objetivo proposto
pelo Product Owner e ao término, tem-se uma nova versão do sistema. Durante este
período o time realiza diversas atividades:
2.3.3 Artefatos
Fonte: http://www.brq.com/metodologias-ageis/
2.4 KANBAN
Fonte: http://www.viso.com.br/produto/kanban-kanb-03-C149000.html
26
A transparência que isso gera também contribui para a mudança cultural. O Kanban
expõe gargalos, filas, variabilidade e desperdício, tudo que impacta o desempenho
da organização em termos de quantidade de trabalho de valor entregue e o tempo
de ciclo (tempo médio para executar um item) necessário para entregá-lo. Segundo
Anderson D. citado por Kningerg e Skarin (2009, p. 11), os primeiros estudos de
caso mostraram que o Kanban muda o comportamento e incentiva uma maior
colaboração no trabalho. A utilização de um sistema Kanban permite um controle
detalhado de produção com informações sobre quando, quanto e o que produzir
(AGUIAR; PEINADO, 2007, p. 138).
Segundo Anderson D. citado por Kningerg e Skarin (2009, p. 10), o Kanban é uma
abordagem para introduzir mudanças em um ciclo de desenvolvimento de software
ou metodologia de gerenciamento de projetos. O entendimento do processo se dá
ao mapear o fluxo de valor conforme a Figura 5 e ao concordar em limitar as
atividades em andamento (Work-In-Progress ou WIP).
Atualmente, o Kanban é muitas vezes usado em conjunto com o Scrum, porque são
duas metodologias usadas no desenvolvimento ágil de software.
Fonte: http://tatihelo.wordpress.com/2011/10/03/kanban/
Fonte: http://git-scm.com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Versão.
Fonte: http://git-scm.com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Versão
Uma desvantagem é que o servidor central é um ponto único de falha. Se ele ficar
fora do ar por uma hora, ninguém pode trabalhar em conjunto ou salvar novas
versões dos arquivos durante esse período.
Fonte: http://git-scm.com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Versão
Muitos desses sistemas lidam muito bem com o aspecto de ter vários repositórios
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
não são possíveis em sistemas centralizados, como por exemplo o uso de modelos
hierárquicos.
Cada uma dessas perguntas corresponde a uma das atividades realizadas pela
gerência de configuração para permitir manter a consistência e a integridade do
software com as especificações. Diante disso, é importante guardar toda a
informação requerida para recriar os ambientes no controle de versão; isso inclui
arquivos de DNS, scripts de banco de dados, arquivos de compilação e implantação,
documentação, bibliotecas e arquivos de configuração para a aplicação e todas as
ferramentas relacionadas, e assim por diante, de modo que um novo membro da
equipe possa começar do zero a partir de um único ponto.
2.6.1 Provisionamento
Hoje, existe uma série de ferramentas para provisionar uma máquina, cada uma
delas com seus diferentes benefícios 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/) e Salt
(http://saltstack.com/). Todas elas estão contribuindo para a evolução da
comunidade DevOps (veja seção 2.10), e, apesar de competirem entre si, seu maior
adversário ainda é a falta de uso pelas empresas.
Sato (2013, p.60) relata uma característica importante que essas ferramentas
especializadas possuem, a idempotência. A idempotência permite executar o código
diversas vezes seguidas e as ferramentas só mudarão o que for necessário. Se um
pacote estiver instalado, ele não será reinstalado. Se um serviço está iniciado, ele
não será reiniciado. Diferentemente dos scripts proprietários que só funcionam para
instalar e configurar o servidor pela primeira vez.
2
Acesse http://martinfowler.com/bliki/SnowflakeServer.html para mais detalhes sobre
Snowflake Server.
33
Existem diversos tipos de teste que podem ser automatizados para garantir a
entrega de software com alta qualidade. Conforme Sato (2013, p.120), não existe
uma classificação ou terminologia amplamente aceita na indústria, mas a
comunidade ágil geralmente se refere aos quatro quadrantes da Figura 9, descritos
por Brian Marick.
No lado superior, estão os testes que são escritos do ponto de vista do negócio, com
uma linguagem que faz sentido para um especialista de domínio. No lado inferior
estão os testes voltados à tecnologia, escritos do ponto de vista técnico e com
termos que farão sentido para os programadores.
Os testes automatizados permitem que a máquina faça o que ela é boa, a repetição,
enquanto os humanos façam o que eles são bons, explorar. Para a tarefa de escrita
dos testes automatizados, a XP traz em suas práticas como descrito na seção 2.2.3,
a prática de desenvolvimento guiado por testes, que é muito difundida na
comunidade de desenvolvimento de software e descrita na próxima seção.
Desde a década de 90, quando Kent Beck escreveu a primeira biblioteca de testes,
o SUnit, em Smalltalk, existe a ideia de automatizar a tarefa de testes que muitas
vezes era efetuada manualmente. Como as práticas da XP ganharam notoriedade
no decorrer dos anos, o TDD ganhou ainda mais atenção, introduzindo o conceito de
que os desenvolvedores devam escrever os testes para as funcionalidades antes de
codificá-las. Conforme Braúna (2013, p. 4), isso permite um melhor entendimento
das necessidades do cliente, cria uma preocupação com as interfaces externas dos
métodos e classes e permite contar com um conjunto de testes que podem ser
executados a qualquer momento para validar o sistema.
35
O ciclo aplicado à prática do TDD envolve três passos, conforme a Figura 10.
Fonte: http://www.lagerweij.com/2014/04/04/outside-in-whatevers-at-the-core/
Cada alteração que tenha sido validada com sucesso pelo processo de integração
contínua vira uma versão candidata a ir para produção e fica disponível no
repositório de artefatos. Essa prática permite descobrir eventuais defeitos o mais
rapidamente possível, acelerando a correção e diminuindo a probabilidade de que
pequenos erros se transformem em grandes dores de cabeça no futuro.
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 vários ciclos compostos de testes e
demonstrações e todo o processo seria repetido várias vezes.
estejam prontas para produção o quanto antes e obter feedback sobre a falha o mais
rápido possível (HUMBLE; FARLEY, 2014, p. 108).
Ë necessário ter uma visão dos processos necessários para permitir a entrega, isso
pode ser efetuado através do mapa de fluxo de valor conforme visto no início deste
capítulo. Com a participação de todos os envolvidos é possível descrever todos os
passos, obter estimativas do tempo decorrido e do tempo gasto nas atividades que
agregam valor. Modelar um pipeline de implantação exige entender seus processos
de entrega e balancear o nível de feedback que você quer receber (SATO, 2013, p.
182). Projetos anteriores podem servir de base se estiver trabalhando em um novo
projeto.
Pode-se iniciar com um fluxo básico, um estágio para compilar a aplicação e rodar
os testes unitários, um estágio para executar os testes de aceitação e um estágio
para implantar o sistema em um ambiente similar ao de produção. O primeiro
estágio é executado sempre que se faz check-in no repositório de código, os testes
de aceitação devem utilizar o mesmo código resultante da etapa anterior e começar
automaticamente depois que a compilação e os testes unitários tiverem sidos
executados com sucesso. Os estágios de implantação utilizam as versões que
passaram com sucesso pelos testes de aceitação e devem poder ser executados
com o acionar de um botão. Na prática de entrega contínua, conforme (SATO, 2013,
p. 181), a decisão de levar uma versão para produção é de negócio e normalmente
requer pessoas com autorização.
• Minimização dos efeitos de erros cometidos por pessoas por meio da máxima
automação do processo possível, começando com os estágios mais sujeitos a
erros;
• Ensaiar os procedimentos em ambientes similares ao de produção, de modo
que seja possível depurar o sistema e a tecnologia que o suporta;
• Ter a capacidade de executar um rollback3 de uma entrega se as coisas não
acontecerem de acordo com o plano;
• Ter uma estratégia de migração de dados e configuração de produção como
parte do processo de rollback.
Para que se consiga obter todos os benefícios do pipeline, Humble e Farley (2014,
p. 113) descrevem um conjunto de práticas, tais como:
3
Rollback é uma ação que desfaz a ação corrente, fazendo com que todas as modificações
realizadas até o momento sejam rejeitadas. Para mais informações acesse:
http://pgdocptbr.sourceforge.net/pg82/sql-rollback.html
4
Acesse o video em: https://www.youtube.com/watch?v=LdOe18KhtT4
5
www.flickr.com
42
Fonte: http://en.wikipedia.org/wiki/DevOps
A empresa objeto deste estudo de caso está sediada em Vitória ES e possui mais de
5 anos de atuação no mercado de desenvolvimento de software. É especializada em
soluções para lojas virtuais e possui cerca de 20 colaboradores, sendo que sete
deles formam uma equipe dedicada exclusivamente para seu Sistema de Loja
Virtual (SLV). Essa equipe, é composta de 3 desenvolvedores, 1 gerente de
projetos, 2 suporte/qualidade e 1 comercial, que atendem lojistas de várias regiões
do país no mercado de comércio eletrônico.
Esse mapa é executado sempre que há uma nova solicitação, seja de clientes novos
ou de clientes já existentes e é composto das seguintes atividades:
44
Com demonstrado na seção 3.1, há uma grande utilização do SLV. Os clientes estão
sempre solicitando atualizações e melhorias para acompanhar as novas tendências
do mercado, fazendo com que a empresa receba uma grande demanda de
manutenções mensais.
Conforme a descrição da seção 3.1.2, fica visível que um dos pontos desafiadores
do projeto está na utilização de ferramentas capazes de automatizar diversas tarefas
incluídas no processo de desenvolvimento e de prover uma forma simplificada de
utilização pelos envolvidos.
Este caso de uso é decomposto nos casos de uso apresentados na Figura 19.
Este caso de uso é decomposto nos casos de uso apresentados na Figura 21.
7
Em criptografia, SHA-1 é uma função hash de criptografia projetado pela Agência dos
Estados Unidos de Segurança Nacional. Veja mais em: http://en.wikipedia.org/wiki/SHA-1.
55
TÍTULO DESCRIÇÃO
O sistema deve garantir a segurança dos dados contidos no
1 Segurança
sistema.
Deve possuir uma navegabilidade fácil e intuitiva para facilitar a
2 Navegabilidade
utilização diária.
O sistema deve possuir acesso a múltiplos usuários conectados
3 Multiacesso
simultaneamente e executando tarefas distintas ou não.
O sistema deve atender aos requisitos de forma eficiente para
4 Performance
possibilitar um ciclo de feedbacks curtos.
O sistema deve efetuar a integração com as ferramentas
5 Integração utilizadas de forma a facilitar a utilização por todos os
envolvidos.
56
A ferramenta utilizada será o Puppet, descrita na seção 5.2.1.9, uma das primeiras
ferramentas criada desse tipo, bastante popular e com uma grande comunidade
contribuindo com conteúdos, tais como tutoriais e módulos open source.
Pelo fato de estar trabalhando com um sistema base, o SLV, não há diferenças
complexas entre os ambientes dos clientes. As maiores mudanças concentram-se
em dados de configuração. Em cada projeto, deverá ser possível inserir informações
de configuração dos ambientes.
Serão utilizados dois pacotes do Puppet, o Puppet Master e o Puppet Client, como
mostra a Figura 22.
efetuado com a solicitação das configurações ao Puppet Master pelo Puppet Client.
O Puppet Client solicita suas configurações e aplica em seu ambiente.
Para cada SLV um projeto no Ovenbird será criado para que as solicitações sejam
agrupadas. Um novo projeto cria uma área de trabalho onde as solicitações serão
visualizadas. Esta área de trabalho é um reflexo do quadro Kanban mostrado na
Figura 16, com a inclusão de novas colunas para permitir a visualização de todas as
etapas inclusas no processo de entrega de software. O novo quadro pode ser
visualizado na Figura 23.
59
NOME DESCRIÇÃO
Puppet Automação de Infraestrutura
Vagrant Automação de Ambiente de Desenvolvimento
Git Sistema de Controle de Versão Distribuído
Mina Automação de Implantação
Jenkins Servidor de Integração Contínua
RSpec / Cucumber Automação de Testes
Conforme (HUMBLE; FARLEY, 2014, p. 106), isso permite que equipes de testes
possam criar e implantar seu próprios ambientes de testes com o apertar de um
botão. Desenvolvedores podem ver quais versões passaram por quais estágios do
processo de entrega e quais problemas foram encontrados, e gerentes podem
verificar e monitorar métricas fundamentais como tempo de ciclo e qualidade de
61
Fonte: http://www.informit.com/articles/article.aspx?p=1621865&seqNum=2
Fonte: http://toolscloud.com/
3.5.3 Trello
Ele permite a criação de diversos quadros, nos quais pode-se criar diversas colunas,
como mostra a Figura 27. Dentro de cada coluna é possível adicionar uma ou mais
tarefas (cards), contendo o conteúdo que o usuário desejar.
64
Fonte: http://corporate.canaltech.com.br/dica/utilitarios/gerencie-equipes-e-tarefas-com-o-trello-e-de-adeus-aos-post-its/
5. PROJETO E IMPLEMENTAÇÃO
5.1 PROJETO
Para beneficiar toda a equipe responsável pelo SLV, a interface foi desenvolvida de
forma a permitir acesso ao sistema via internet. Para permitir a compatibilidade entre
os navegadores web, a interface do protótipo foi desenvolvida com o auxílio da
biblioteca Bootstrap (http://getbootstrap.com/), fazendo-se uso do HTML e da
Cascading Style Sheets (CSS). O projeto de interface com o usuário relaciona-se
tanto com o estudo de pessoas quanto com aspectos tecnológicos (PRESSMAN,
2006, p. 265). Em geral, decompõe-se em Projeto de Arquitetura da Aplicação Web
e Projeto de Navegação, apresentados a seguir.
O Projeto de Arquitetura para aplicação web deve descrever como será realizada a
comunicação do usuário com o sistema. A utilização da estrutura hierárquica permite
um fluxo de controle horizontal, por meio da ramificação de hipertexto, ao longo dos
ramos verticais da estrutura (PRESSMAN, 2006, p. 442). A Figura 35 apresenta o
projeto de arquitetura da aplicação web do Ovenbird.
74
Dessa forma não existe o Componente de Gerência de Dados, sendo que este
encontra-se implicitamente implementado na biblioteca ActiveRecord.
8
http://www.martinfowler.com/eaaCatalog/activeRecord.html
81
5.2.1.2 Cucumber
9
http://37signals.com/
83
189), testes de aceitação são voltados para o negócio, não para o desenvolvedor;
eles testam funcionalidades completas em uma versão do sistema.
5.2.1.3 Git
Segundo Silverman (2013, p. 9), qualquer grupo de arquivos relacionados que sejam
alterados com o decorrer do tempo é candidato ao uso do Git, podendo-se:
5.2.1.4 Jenkins
Uma das vantagens do Jenkins, é que ele é altamente extensível, podendo ser
configurado para se comunicar com diversas outras ferramentas, como a da geração
de uma nova versão de software.
5.2.1.5 Mina
5.2.1.6 MySQL
dados mais populares, com mais de 10 milhões de instalações pelo mundo. Possui
versões disponíveis para vários sistemas operacionais, entre eles o Linux, Windows
e FreeBSD.
5.2.1.7 Nginx
Escrito por Igor Sysoev em 2002 e teve sua primeira versão pública liberada em
2004. Segundo uma pesquisa da W3techs.com, em março 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 rápido e concorrente para aplicações web Ruby. Criado por Evan Phoenix no
final de 2011, Puma foi construído para a velocidade e paralelismo (PUMA, [2011?].
5.2.1.9 Puppet
O ponto positivo dessa abordagem declarativa é poder ter algo bastante específico,
e focado em um só trabalho. A ideia é que se tenha a configuração centralizada em
um único ponto, e essa configuração seja distribuída para diversos nós de uma rede
(PUPPET LABS, 2014).
5.2.1.10 RSpec
Muito usado para descrever aplicações RubyOnRails, com o RSpec é possível testar
qualquer código escrito em Ruby. Ele é composto por diversos módulos que
permitem expressar funcionalidades, cenários e expectativas de como sua aplicação
e/ou objetos devem se comportar.
Embora o RSpec seja muito completo, permitido a criação de vários tipos de testes,
tais como testes unitários, testes de aceitação e testes de performance, é possível
estendê-lo muito facilmente caso se queira adequar o modo como ele funciona. Isso
permite tornar os seus testes ainda mais expressivos e concisos (GEORGE, 2014, p.
11).
5.2.1.11 Vagrant
10
http://www.martinfowler.com/bliki/DomainSpecificLanguage.html
87
11
http://www.unix.org/
12
http://linux.die.net/man/8/apt-get
88
Esta tela apresenta o formulário para cadastro de um novo projeto, sendo também
utilizada para exibir as informação que poderão ser atualizadas de acordo com a
ação executada (cadastrar, editar e visualizar). A tela possui três seções
relacionadas. A primeira seção é o formulário para cadastro das informações de um
projeto. A segunda seção, é a lista de todos os ambientes já configurados para este
projeto. Nota-se que nesta seção há dois botões em destaque; o botão “Configurar”
que executa o caso de uso InstalarPuppet e o botão “Provisionar”, responsável por
executar o caso de uso ProvisionarAmbiente e deixar o ambiente em um estado
adequado para implantação. A terceira seção é a lista dos especialistas que irão
contribuir para o desenvolvimento da loja virtual.
A partir dessa tela será possível acessar o quadro Kanban com as funcionalidades
clicando no botão “Visualizar Projeto” de cada projeto cadastrado.
A Figura 51 apresenta a tela para cadastro de uma nova solicitação pelo ator
GerenteProjetos.
A ferramenta proposta neste trabalho tem como objetivo gerenciar a transição das
solicitações pelos vários estágios do desenvolvimento até o momento da entrega ao
usuário final, para permitir que a equipe responsável pelo SLV responda às
mudanças de forma eficiente, aumente a capacidade de gerar novas versões bem-
sucedidas e de liberá-las sob demanda e implante o seu sistema de loja virtual em
qualquer ambiente instantaneamente para refletir as mudanças de uma forma
eficiente e com baixo custo. Para isso, a ferramenta proposta realiza a integração de
ferramentas para a automatização de infraestrutura, integração continua do código,
execução de testes automatizados e a automatização da implantação, abstraindo a
complexidade da utilização através de uma interface amigável e que permita a
manipulação por qualquer membro da equipe.
REFERÊNCIAS
ANEXOS
Subsistema:
Data: 27/11/2014
Descrição: Esse caso de uso tem por objetivo o gerenciamento das solicitações de
cada cliente, a criação dos ambientes para implantação do SLV e o gerenciamento
das informações dos interessados no desenvolvimento do sistema, o cliente e a
equipe de desenvolvimento (usuário).
Data: 27/11/2014
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita cadastrar um novo usuário.
2. O ator informa os dados necessários (nome, e-mail, descrição (opcional),
telefone, login, senha e tipo) para cadastro do usuário.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que o usuário foi cadastrada com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Fluxo Principal:
1. O ator solicita alterar um usuário.
2. O ator informa os dados necessários (nome, e-mail, descrição (opcional),
telefone, login, senha e tipo) para alterar o usuário.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que o usuário foi alterado com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Fluxo Principal:
1. O ator solicita excluir um usuário
2. O ator informa o usuário a ser excluído.
3. O sistema verifica se o usuário existe.
4. O sistema pede confirmação para exclusão do usuário.
5. O sistema informa que o usuário foi excluído com sucesso.
Fluxo Alternativo:
3a. Usuário informado não existe
3a. 1 O sistema informa que o usuário não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Fluxo Principal:
1. O ator solicita consultar um usuário.
2. O ator informa o usuário a ser consultado.
3. O sistema verifica se o usuário existe.
4. O sistema mostra as informações do usuário consultado.
Fluxo Alternativo:
3a. O usuário informado não existe
3a. 1 O sistema informa que o usuário não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
104
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita cadastrar um novo cliente.
2. O ator informa os dados necessários (nome, e-mail, razão social, telefone)
para cadastro do cliente.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que o cliente foi cadastrado com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Fluxo Principal:
1. O ator solicita alterar um cliente.
2. O ator informa os dados necessários (nome, e-mail, razão social, telefone)
para alterar o cliente.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que o cliente foi alterado com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Fluxo Principal:
1. O ator solicita excluir um cliente
2. O ator informa o cliente a ser excluído.
3. O sistema verifica se o cliente existe.
4. O sistema pede confirmação para exclusão do cliente.
5. O sistema informa que o cliente foi excluído com sucesso.
Fluxo Alternativo:
3a. Cliente informado não existe
3a. 1 O sistema informa que o cliente não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
106
Fluxo Principal:
1. O ator solicita consultar um cliente.
2. O ator informa o cliente a ser consultado.
3. O sistema verifica se o cliente existe.
4. O sistema mostra as informações do cliente consultado.
Fluxo Alternativo:
3a. O cliente informado não existe
3a. 1 O sistema informa que o cliente não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
107
Data: 27/11/2014
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita cadastrar um novo ambiente.
2. O ator informa os dados necessários (tipo, descrição, url, ip, usuário e
senha) para cadastro do ambiente.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que o ambiente foi cadastrado com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
109
Fluxo Principal:
1. O ator solicita alterar um cliente.
2. O ator informa os dados necessários (tipo, descrição, url, ip, usuário e
senha) para alterar o ambiente.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que o ambiente foi alterado com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Fluxo Principal:
1. O ator solicita excluir um ambiente
2. O ator informa o ambiente a ser excluído.
3. O sistema verifica se o ambiente existe.
4. O sistema pede confirmação para exclusão do ambiente.
5. O sistema informa que o ambiente foi excluído com sucesso.
Fluxo Alternativo:
3a. Ambiente informado não existe
3a. 1 O sistema informa que o ambiente não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
110
Fluxo Principal:
1. O ator solicita consultar um ambiente.
2. O ator informa o ambiente a ser consultado.
3. O sistema verifica se o ambiente existe.
4. O sistema mostra as informações do ambiente consultado.
Fluxo Alternativo:
3a. O ambiente informado não existe
3a. 1 O sistema informa que o ambiente não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
111
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita consultar um ambiente.
2. O ator informa o ambiente a ser consultado.
3. O sistema verifica se o ambiente existe.
4. O sistema mostra o botão “Configurar”.
5. O ator clica no botão para executar o processo de instalação.
6. O sistema informa que o ambiente foi configurado com sucesso.
Fluxo Alternativo:
3a. O ambiente informado não existe
3a. 1 O sistema informa que o ambiente não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
3b. Informações de acesso ao ambiente erradas
3b. 1 O sistema informa que não conseguir acessar o ambiente.
3b. 2 O sistema retorna ao Fluxo Normal passo 4.
112
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita consultar um ambiente.
2. O ator informa o ambiente a ser consultado.
3. O sistema verifica se o ambiente existe.
4. O sistema mostra o botão “Provisionar”.
5. O ator clica no botão para executar o processo de provisionamento.
6. O sistema informa que o ambiente foi provisionado com sucesso.
Fluxo Alternativo:
3a. O ambiente informado não existe
3a. 1 O sistema informa que o ambiente não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
3b. Informações de acesso ao ambiente erradas
3b. 1 O sistema informa que não conseguir acessar o ambiente.
3b. 2 O sistema retorna ao Fluxo Normal passo 4.
113
Data: 27/11/2014
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita cadastrar um novo projeto.
2. O ator informa os dados necessários (cliente, nome e url do repositório)
para cadastro do projeto.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que o projeto foi cadastrado com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
115
Fluxo Principal:
1. O ator solicita alterar um projeto.
2. O ator informa os dados necessários (cliente, nome e url do repositório)
para alterar o ambiente.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que o projeto foi alterado com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Fluxo Principal:
1. O ator solicita excluir um projeto
2. O ator informa o projeto a ser excluído.
3. O sistema verifica se o projeto existe.
4. O sistema pede confirmação para exclusão do projeto.
5. O sistema informa que o projeto foi excluído com sucesso.
Fluxo Alternativo:
3a. O projeto informado não existe
3a. 1 O sistema informa que o projeto não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
116
Fluxo Principal:
1. O ator solicita consultar um projeto.
2. O ator informa o projeto a ser consultado.
3. O sistema verifica se o projeto existe.
4. O sistema mostra as informações do projeto consultado.
Fluxo Alternativo:
3a. O projeto informado não existe
3a. 1 O sistema informa que o projeto não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
117
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita cadastrar uma nova solicitação.
2. O ator informa os dados necessários (nome, data de início, data da
finalização e descrição) para cadastro de uma solicitação.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que a solicitação foi cadastrada com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
118
Fluxo Principal:
1. O ator solicita alterar uma solicitação.
2. O ator informa os dados necessários (nome, data de início, data da
finalização e descrição) para alterar a solicitação.
3. O sistema verifica se as informações são válidas.
4. O sistema informa que a solicitação foi alterada com sucesso.
Fluxo Alternativo:
3a. Dados necessários inválidos
3a. 1 O sistema informa qual ou quais dados estão incorretos
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
Fluxo Principal:
6. O ator solicita excluir uma solicitação.
7. O ator informa a solicitação a ser excluída.
8. O sistema verifica se a solicitação existe.
9. O sistema pede confirmação para exclusão da solicitação.
10. O sistema informa que a solicitação foi excluída com sucesso.
Fluxo Alternativo:
3a. O projeto informado não existe
3a. 1 O sistema informa que a solicitação não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
119
Fluxo Principal:
1. O ator solicita consultar uma solicitação.
2. O ator informa a solicitação a ser consultada.
3. O sistema verifica se a solicitação existe.
4. O sistema mostra as informações da solicitação consultada.
Fluxo Alternativo:
3a. A solicitação informada não existe
3a. 1 O sistema informa que a solicitação não existe.
3a. 2 O sistema retorna ao Fluxo Normal passo 2.
120
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita consultar um projeto.
2. O ator move a solicitação da coluna Solicitações para a coluna A Faze.
3. O sistema atualiza o status da solicitação.
121
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita consultar um projeto.
2. O ator move a solicitação da coluna A Fazer para a coluna Fazendo.
3. O sistema atualiza o status da solicitação.
122
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita consultar um projeto.
2. O ator adiciona o código do Git na solicitação.
3. O ator move a solicitação da coluna Fazendo para a coluna Teste Unit.
4. O sistema atualiza o status da solicitação.
123
Data: 27/11/2014
Descrição: Este caso de uso descreve o processo em que o SIC inicia o processo
de testes da solicitação informada.
Fluxo Principal:
1. O ator verificar se a solicitação está no repositório de código.
2. O ator faz o check-in no repositório.
3. O ator executa os testes automatizados.
4. O sistema atualiza o status da solicitação em cada etapa dos testes.
124
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita consultar um projeto.
2. O ator clica no botão para iniciar o processo.
3. O sistema executa a ferramenta de implantação.
4. O sistema atualiza o status da solicitação.
125
Data: 27/11/2014
Fluxo Principal:
1. O ator solicita consultar um projeto.
2. O ator clica no botão para iniciar o processo.
3. O sistema executa a ferramenta de implantação.
4. O sistema atualiza o status da solicitação.