Documente Academic
Documente Profesional
Documente Cultură
1. Introduo
Com a globalizao e o aumento ao acesso a banda larga, o mundo vive uma interao
em tempo real. Ideias, tendncias, necessidades, informaes, dentre outros, navegam
de continente 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 esse processo,
denominado como tempo de ciclo, pode determinar o rumo dos negcios junto a
concorrncia.
Desde 1980, autores como Kent Beck, Martin Fowler, Paul Duvall, Ron Jeffries
e Dave Thomas, estudam melhores prticas de desenvolvimento com o objetivo de
poder fornecer ao mundo uma alternativa s metodologias pesadas e altamente dirigidas
por documentao que esto em uso at hoje [Lopes 2012]. Conforme os dos 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 no gera lucro ou valor at que esteja nas mo de seus usurios,
complementa Humble e Farley (2014).
Este artigo demonstra boas prticas das metodologias gil de desenvolvimento
para efetuar entrega contnua de software de valor ao cliente, descreve os passos de
como detectar erros mais cedo atravs da prtica da integrao contnua, permitindo que
se desenvolva software coeso mais rapidamente [Fowler 2006]. Demonstra o padro
pipeline de entrega, capaz de permitir automatizao desde o desenvolvimento do
software at sua entrega final. Conforme Duval (2012), o pipeline de entrega um
processo no qual diversos tipos de tarefas so executadas com base no sucesso da tarefa
anterior.
Com a automatizao dos processos, a entrega de software se torna 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.
O pipeline envolve atividades de todos os interessados pela entrega de software,
amplia as taxas de implantao e fomenta prticas do movimento DevOps, criando um
relacionamento colaborativo entre as equipes de desenvolvimento, qualidade e de
operaes. Automatizar os processos de forma que todos os envolvidos possam executar
tarefas (que at ento so manuais) de forma assncrona, melhora produtividade e a
quantidade de entregas de valor dentro de tempo de ciclo, permitindo implantar o
sistema para qualquer ambiente instantaneamente, refletindo as mudanas de uma forma
eficiente e com baixo custo.
3. Pipeline de implantao
O processo de levar a funcionalidade da mente do cliente at o usurio final envolve
vrias etapas, dentre elas, a etapa de desenvolvimento. O desenvolvimento composto
de vrios processo alm da codificao e podem ser mapeados atravs da modelagem do
mapa de fluxo de valor. O mapa de fluxo de valor possibilita uma viso mais holstica,
de ponta a ponta do processo de entrega. O objetivo do fluxo de valor mapear uma
solicitao do cliente, do momento em que ela chega at que ela esteja disponvel em
produo [Popperdieck, M. e Popperdieck, T. 2011].
TDD uma tcnica de desenvolvimento de software criada por Kent Beck. Veja em:
http://pt.wikipedia.org/wiki/Test_Driven_Development
5. Trabalhos relacionados
Este captulo apresenta os trabalhos relacionados a evoluo dos processos que envolve
o desenvolvimento de software, desde a sua concepo at a disponibilizao ao seu
pblico.
Ao longo da dcada de 80, nos Estados Unidos, entre 1986 a 1996 conforme
descrito por Teles (2004, p. 272), Kent Beck e Ward Cunningham desenvolveram um
amplo conjunto de boas prticas que foram publicadas em 1996 sob o ttulo Pattern
Languages of Program Design 2.
Por volta de 1996, Kent Beck publicou o livro Smalltalk Best Practices Patterns
e Martin Fowler em 2000, publicou o Refactoring: Improving the Design of Existing
Code, um trabalho que combina uma grande parte dessas tcnicas. Diretamente das
tcnicas de refactoring como descrito por Teles (2004, 272), surgiu o desenvolvimento
guiado por testes, tendo seu primeiro artigo publicado por Kent Beck para a
SmalltalkReport. Em 1999, Kent Beck agrupou vrias tcnicas de desenvolvimento e
publicou o livro Extreme Programming Explained.
Em 2001, 17 pensadores de desenvolvimento de software, dentre eles: Martin
Fowler, Kent Beck, Kent Schwaber, Ron Jeffries, Dave Thomas, se reuniram para
buscar uma alternativa s metodologias pesadas e altamente dirigias por documentao
(LOPES, 2012, p. 16). Desse encontro surgiu um conjunto de valores denominado
Manifesto gil (2001).
Em 2000, Martin Fowler publica o artigo Continuous Integration, descrevendo
uma das prticas do XP, a Integrao Contnua e em 2007 Paul M. Duvall publica o
livro Continuous Integration, discutindo em detalhes como transformar o processo de
integrao em uma rotina da equipe de desenvolvimento.
Em 2009 durante a conferncia Velocity da OReilly, John Allspan e Paul
Hammond apresentaram 10+ Deploys Per Day, demonstrando como a Flickr efetuava
10 implantaes por dia, desde ento, deu-se origem ao movimento DevOps, buscando
difundir em todo mundo como a colaborao entre todos os envolvidos na entrega do
software.
6. Concluso
Este trabalho teve como foco demonstrar conjunto de boas prticas de desenvolvimento
de software, testadas e validadas por diversos autores. O objetivo est em permitir
efetuar a entrega de software com maior qualidade em um curto perodo e promover a
comunicao com um ciclo de feedback constante entre todos os interessados.
Com isso, muda-se o conceito de pronto,
fazendo com que uma
funcionalidade s esteja pronta quando ela est em produo, fazendo o que tem que
fazer e entregando valor aos seus usurios. Em Startups, esse ciclo de entrega contnua
constantemente utilizado, geralmente se tem pouco recurso e necessrio pensar em
automatizao desde o incio. preciso entregar valor ao usurio para continuar vivo e,
esperar a prxima madrugada para subir a nova funcionalidade pode causar um grande
impacto nos negcios.
A qualidade da aplicao est relacionada tambm com o ambiente onde ela est
implantada. Deve-se tratar as configuraes da mesma forma que o cdigo fonte. Ao
seguir a poltica de que nada modificado em um ambiente a menos que esteja em um
script com verso, automatizado e faa parte de um caminho nico para a produo (o
pipeline de entrega), possvel determinar melhor a causa raiz dos erros mais
rapidamente, acelerando a correo e diminuindo a probabilidade de que pequenos erros
se transformem em grandes dores de cabea no futuro.
Referncias
DUVAL, Paul. (2012) Agile DevOps: O Achatamento do Processo de Reliase de
Software. http://www.ibm.com/developerworks/br/library/a-devops1/
FOWLER, Martin. (2016) Continuous Integration.
http://martinfowler.com/articles/continuousIntegration.html
FOWLER, Martin. (2013) Deployment Pipeline.
http://martinfowler.com/bliki/DeploymentPipeline.html
HUMBLE, J.; FARLEY, D. (2014) Entrega Contnua: Como Entregar Software de
Forma Rpida e Confivel. Porto Alegre: Bookman.
LOPES, Camilo. (2012) TDD na Prtica. Rio de Janeiro: Cincia Moderna.
MANIFESTO GIL. (2001) "Manifesto Para o Desenvolvimento gil de Software".
http://manifestoagil.com.br/
PRESSMAN, R. S. (2006) Engenharia de Software. So Paulo: McGraw-Hill
POPPENDIECK, Mary; POPPENDIECK, Tom. (2011) Implementando o
Desenvolvimento Lean de Software: Do Conceito ao Dinheiro. Porto Alegre:
Bookman.
SATO, Danilo. (2013) DevOps na Prtica: Entrega de Software Confivel e
Automatizada. So Paulo: Casa do Cdigo.
TAVARES, B. (2013) Puppet e Vagrant: Como provisionar mquinas para seu projeto.
http://www.thoughtworks.com/pt/insights/blog/puppet-and-vagrant-how-provisionmachines-your-project.
TELES, Vincius M. (2004) Extreme Programming. So Paulo: Novatec Editora Ltda.