SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Reconstrução e contínua integração de
software
Pagando seus débitos técnicos e criando uma produção de
pronta entrega
Reconstrução de código
❖ Devemos enxergar a reconstrução de código como uma conta de uma
casa
❖ Sempre devemos estar em dia
❖ Reconstrução seria a realização de pequenas modificações no código,
sem mexer na lógica do software
❖ Não adicionamos novos recursos ou fixamos bugs
Reconstrução de código
Imagem 13.2
❖ A reconstrução deve ocorrer desde o início do projeto
❖ Para que a mudança sempre seja menos trabalhosa
❖ Diminuição do custo de mudança
Reconstrução de código
Reconstrução de código
❖ Se o programador sempre tiver técnicos débitos no seu código
❖ Significa que ele sempre estar tentando inovar
❖ Acumulação de débitos gera muitos problemas
Pagamento de débito de código
Princípio Ágil
❖ Atenção contínua a excelência técnica e uma boa melhora ágil no design
Imagem 13.3
Reconstrução consistente e contínua
❖ Trabalhar duro e receber suas recompensas
❖ Reconstrução agressiva significa que o programador a deixou para o
final da iteração
❖ Deve-se reconstruir o código diariamente
❖ Quando a reconstrução e feita constantemente é quase impossível de se
perceber a diferença
Reconstrução consistente e contínua
Imagem 13.3.1
Reconstrução consistente e contínua
Imagem 13.3.2
Reconstrução consistente e contínua
❖ Com Apenas esse três passos de reconstrução:
1. Renomeação de variáveis e métodos
2. Deixar variáveis na mesma linha (no caso de métodos booleanos)
3. Extrair métodos (deixar os passos do método mais visíveis)
http://www.greenfoot.org/doc/tut-3
Reconstrução consistente e contínua
❖ Esses três passos são importantes para eventuais emergências que a
equipe possa ter, como consertar bugs, e fazer mudanças críticas
❖ Observe sua situação, e veja o que precisa ser feito,faça agora o que
você acha que pode lhe causar problemas futuros, caso deixe para fazer
depois
Integração contínua: prontidão no processo
de produção
❖ Criação de uma cultura de uma produção que se encontra em prontidão
e ser ter a capacidade de demonstrar nosso produto para qualquer
pessoa, a qualquer hora, em qualquer lugar.
Integração contínua: prontidão no processo
de produção
❖ Em uma equipe que trabalha o conceito de prontidão no processo de
prontidão podemos observar que:
1. A equipe possui um repositório único para o código fonte, onde todos
podem alterar o código, sem interferir nas mudanças dos outros
membros
2. As mudanças são integradas ao longo de cada dia, para que todos da
equipe sabiam o que acontece no sistema
Integração contínua: cultura de produção de
prontidão
❖ Desenvolver software se faz da mesma forma em todo lugar, quanto
mais o programador demorar para reconstruir o software, mais difícil
será fazer manutenção do mesmo
Como isso funciona ?
❖ Para implementar integração contínua ao código, sáo necessários
alguns passos:
1. Um repositório para o código
2. Um processo de check-in
3. Um processo de teste automatizado
4. Boa vontade para trabalhar com pequenas partes do projeto por vez
Repositório de código
❖ Possuir um único local para todos da equipe alocarem o código e
editarem
Imagem 15.3
Processo automatizado de check-in do
código
Imagem 15.5
Processo automatizado de check-in do
código
❖ Podemos conceituar o processo automatizado de check-in como sendo
a elaboração e realização de diversos tipos de teste contra o código em
questão, para a retirada de todos os erros visíveis pelos stakeholders.
Processo automatizado de check-in do
código
❖ Para um processo automatizado de check-in de um código é
necessários:
1. Utilizar a última versão do código, em seu repositório
2. Fazer alterações
3. Rodar testes até eliminar os erros visualizados
4. Adquirir novamente a última versão do código, em seu repositório
5. Realizar novos testes para remover possíveis novos problemas
6. Finalizar processo de check-in
Boas e más práticas no processo de check-
in do código
Imagem 15.5.1
Boas práticas no processo de check-in do
código
1. Checar por versões recentes do código em seu repositório
2. Rodar todos os testes
3. Fazer check-ins regularmente
4. Deixar como prioridade códigos em que os testes não foram realizados
com sucesso
Más práticas no processo de check-in do
código
1. Deixar o código com mais problemas depois de ter rodado os testes
2. Checar códigos com problemas
3. Comentar códigos que já não são mais utilizados
Criação de um teste automatizado
❖ “A chave para qualquer construção(código) automatizada - quanto
menos envolvimento humano,melhor.”
❖ Muitas linguagens atualmente possuem seus frameworks automatizados
Criação de um teste automatizado
Imagem 15.6
Criação de um teste automatizado
❖ Esse processo consiste em 4 passos simples:
1. Cada membro da equipe realiza modificações no código e colocam no
mesmo repositório
2. O sistema verifica as modificações de cada membro
3. Se caso houver algum conflito de alteração, ou se determinada alteração
pode gerar alguma outro erro
Criação de um teste automatizado
4. O sistema avisa as membro para que os membros decidam qual
modificação ficará, ou modificar novamente o código para retirar o erro
que foi inserido
E se o programador não tiver permissão para
aplicar métodos ágeis ?
Imagem 15.8
E se o programador não tiver permissão para
aplicar métodos ágeis ?
❖ Ao final se torna tudo questão de escolha
❖ Ninguém pode fazer você parar de produzir software de alta qualidade
❖ Não fale para outra pessoa o que fazer
❖ Aceita que outras pessoas não estarão com você para lhe ajudar
❖ Apenas faça o que tem que ser feito
Não se preocupe em se tornar ágil
❖ Ser ágil é uma jornada, não um destino
❖ Então você nunca seja realmente a agilidade
❖ E não esqueça que não é o fato de ser você ser ágil ou não, mas você
produzir produtos de qualidade
Referências
The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer.
13.2 The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer, p.215.
13.3.1 The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer, p.218.
Referências
13.3.2 The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer, p.221.
15.3 The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer, p.239.
15.5 The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer, p.242.
Referências
15.5.1 The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer, p.243.
15.6 The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer, p.245.
15.8 The Agile Samurai: How masters deliver great softwares,Rasmusson
Jonathan,Susannah Davidson Pfalzer, p.248.
Instituto Federal de Pernambuco.
Aluno(a): Laura Regina Morais de Oliveira.
Turma:2º período.
Curso:Tecnologia em Análise e Desenvolvimento de Sistemas.
Prof.:Marcos André.
Disciplina: Engenharia de Software.

Mais conteúdo relacionado

Mais procurados

Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.Vinta Software
 
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Trends
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous DeliverySamanta Cicilia
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Apresentação e guerra dos métodos 2.0
Apresentação e guerra dos métodos 2.0Apresentação e guerra dos métodos 2.0
Apresentação e guerra dos métodos 2.0Rodrigo Yoshima
 
Alm e ATLM - A importância dos lifecycles no desenvolvimento de software
Alm e ATLM - A  importância dos lifecycles no desenvolvimento de softwareAlm e ATLM - A  importância dos lifecycles no desenvolvimento de software
Alm e ATLM - A importância dos lifecycles no desenvolvimento de softwareVandre Ramos, MSc, MBA, CSM
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horasSamanta Cicilia
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega ContínuaMarlon Bernardes
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)Renato Pina
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeWende Mendes
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend ServerDiego Santos
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Claudia Melo
 
O Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeO Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeAntônio Carlos
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaHumberto Streb
 

Mais procurados (19)

Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.
 
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery
 
Qaladies apresentacao
Qaladies apresentacaoQaladies apresentacao
Qaladies apresentacao
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Apresentação e guerra dos métodos 2.0
Apresentação e guerra dos métodos 2.0Apresentação e guerra dos métodos 2.0
Apresentação e guerra dos métodos 2.0
 
O papel do qa (testador) em um time ágil
O papel do qa (testador) em um time ágilO papel do qa (testador) em um time ágil
O papel do qa (testador) em um time ágil
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
Gitlab CI/CD com python
Gitlab CI/CD com pythonGitlab CI/CD com python
Gitlab CI/CD com python
 
Alm e ATLM - A importância dos lifecycles no desenvolvimento de software
Alm e ATLM - A  importância dos lifecycles no desenvolvimento de softwareAlm e ATLM - A  importância dos lifecycles no desenvolvimento de software
Alm e ATLM - A importância dos lifecycles no desenvolvimento de software
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega Contínua
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipe
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend Server
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)
 
O Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeO Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidade
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 

Destaque

123456789987654321
123456789987654321123456789987654321
123456789987654321LDS-Labs
 
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...Sandro Andrade
 
Thiago silva barros_1102133_ads_640_padrao_adapter
Thiago silva barros_1102133_ads_640_padrao_adapterThiago silva barros_1102133_ads_640_padrao_adapter
Thiago silva barros_1102133_ads_640_padrao_adapterThiago Barros, PSM
 
Apostila xp programação ágil
Apostila xp   programação ágilApostila xp   programação ágil
Apostila xp programação ágilDaniel Brandão
 
Estimativas de Software – Fundamentos, Técnicas e Modelos... e o principal, i...
Estimativas de Software – Fundamentos, Técnicas e Modelos... e o principal, i...Estimativas de Software – Fundamentos, Técnicas e Modelos... e o principal, i...
Estimativas de Software – Fundamentos, Técnicas e Modelos... e o principal, i...guest1e1a9bf5
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareNatanael Simões
 
Engenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLEngenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLAlessandro Almeida
 
Apresentação da disciplina de Introdução à Informática
Apresentação da disciplina de Introdução à InformáticaApresentação da disciplina de Introdução à Informática
Apresentação da disciplina de Introdução à InformáticaKéssia Marchi
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Ferramentas Livres para a Gestão de Projetos Ágeis com Scrum
Ferramentas Livres para a Gestão de Projetos Ágeis com ScrumFerramentas Livres para a Gestão de Projetos Ágeis com Scrum
Ferramentas Livres para a Gestão de Projetos Ágeis com ScrumThiago Barros, PSM
 
Hacking the World - Keynote - TaSafoConf2015
Hacking the World - Keynote - TaSafoConf2015Hacking the World - Keynote - TaSafoConf2015
Hacking the World - Keynote - TaSafoConf2015Manoel Pimentel Medeiros
 
Scrum - Conceitos, Práticas e Experiências - Manoel Pimentel
Scrum - Conceitos, Práticas e Experiências - Manoel PimentelScrum - Conceitos, Práticas e Experiências - Manoel Pimentel
Scrum - Conceitos, Práticas e Experiências - Manoel PimentelManoel Pimentel Medeiros
 
Princípios da engenharia de software (marcello thiry)
Princípios da engenharia de software (marcello thiry)Princípios da engenharia de software (marcello thiry)
Princípios da engenharia de software (marcello thiry)Marcello Thiry
 
Engenharia de Software - Introdução e Motivação (Marcello Thiry)
Engenharia de Software - Introdução e Motivação (Marcello Thiry)Engenharia de Software - Introdução e Motivação (Marcello Thiry)
Engenharia de Software - Introdução e Motivação (Marcello Thiry)Marcello Thiry
 

Destaque (20)

Modularização
ModularizaçãoModularização
Modularização
 
123456789987654321
123456789987654321123456789987654321
123456789987654321
 
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
 
Thiago silva barros_1102133_ads_640_padrao_adapter
Thiago silva barros_1102133_ads_640_padrao_adapterThiago silva barros_1102133_ads_640_padrao_adapter
Thiago silva barros_1102133_ads_640_padrao_adapter
 
Gerenciamento de Pessoas
Gerenciamento de PessoasGerenciamento de Pessoas
Gerenciamento de Pessoas
 
Cursos de computação
Cursos de computaçãoCursos de computação
Cursos de computação
 
Apostila xp programação ágil
Apostila xp   programação ágilApostila xp   programação ágil
Apostila xp programação ágil
 
MPS.BR
MPS.BRMPS.BR
MPS.BR
 
Estimativas de Software – Fundamentos, Técnicas e Modelos... e o principal, i...
Estimativas de Software – Fundamentos, Técnicas e Modelos... e o principal, i...Estimativas de Software – Fundamentos, Técnicas e Modelos... e o principal, i...
Estimativas de Software – Fundamentos, Técnicas e Modelos... e o principal, i...
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
 
O KDE no mundo
O KDE no mundoO KDE no mundo
O KDE no mundo
 
Engenharia de softwares reusabilidade
Engenharia de softwares reusabilidadeEngenharia de softwares reusabilidade
Engenharia de softwares reusabilidade
 
Engenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLEngenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UML
 
Apresentação da disciplina de Introdução à Informática
Apresentação da disciplina de Introdução à InformáticaApresentação da disciplina de Introdução à Informática
Apresentação da disciplina de Introdução à Informática
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Ferramentas Livres para a Gestão de Projetos Ágeis com Scrum
Ferramentas Livres para a Gestão de Projetos Ágeis com ScrumFerramentas Livres para a Gestão de Projetos Ágeis com Scrum
Ferramentas Livres para a Gestão de Projetos Ágeis com Scrum
 
Hacking the World - Keynote - TaSafoConf2015
Hacking the World - Keynote - TaSafoConf2015Hacking the World - Keynote - TaSafoConf2015
Hacking the World - Keynote - TaSafoConf2015
 
Scrum - Conceitos, Práticas e Experiências - Manoel Pimentel
Scrum - Conceitos, Práticas e Experiências - Manoel PimentelScrum - Conceitos, Práticas e Experiências - Manoel Pimentel
Scrum - Conceitos, Práticas e Experiências - Manoel Pimentel
 
Princípios da engenharia de software (marcello thiry)
Princípios da engenharia de software (marcello thiry)Princípios da engenharia de software (marcello thiry)
Princípios da engenharia de software (marcello thiry)
 
Engenharia de Software - Introdução e Motivação (Marcello Thiry)
Engenharia de Software - Introdução e Motivação (Marcello Thiry)Engenharia de Software - Introdução e Motivação (Marcello Thiry)
Engenharia de Software - Introdução e Motivação (Marcello Thiry)
 

Semelhante a Reconstrução e integração contínua

Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumRafael Souza
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
XP Programming
XP ProgrammingXP Programming
XP ProgrammingCJR, UnB
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsGilmar Pupo
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaOtávio Calaça Xavier
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Realizando entregas contínuas para seu app com codepush
Realizando entregas contínuas para seu app com codepushRealizando entregas contínuas para seu app com codepush
Realizando entregas contínuas para seu app com codepushRodolfo Bueno
 
Práticas De Um Engenheiro De Software Eficiente
Práticas De Um Engenheiro De Software EficientePráticas De Um Engenheiro De Software Eficiente
Práticas De Um Engenheiro De Software EficienteGiovanni Bassi
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimentoGabriel Moura
 
Trabalho qualidade de software sistemas de informação
Trabalho qualidade de software   sistemas de informaçãoTrabalho qualidade de software   sistemas de informação
Trabalho qualidade de software sistemas de informaçãoFernando Gomes Chaves
 

Semelhante a Reconstrução e integração contínua (20)

Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e Scrum
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Aula 3 - Engenharia de Software
Aula 3 - Engenharia de SoftwareAula 3 - Engenharia de Software
Aula 3 - Engenharia de Software
 
Realizando entregas contínuas para seu app com codepush
Realizando entregas contínuas para seu app com codepushRealizando entregas contínuas para seu app com codepush
Realizando entregas contínuas para seu app com codepush
 
Práticas De Um Engenheiro De Software Eficiente
Práticas De Um Engenheiro De Software EficientePráticas De Um Engenheiro De Software Eficiente
Práticas De Um Engenheiro De Software Eficiente
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimento
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
TesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdfTesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdf
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Trabalho qualidade de software sistemas de informação
Trabalho qualidade de software   sistemas de informaçãoTrabalho qualidade de software   sistemas de informação
Trabalho qualidade de software sistemas de informação
 

Reconstrução e integração contínua

  • 1. Reconstrução e contínua integração de software Pagando seus débitos técnicos e criando uma produção de pronta entrega
  • 2. Reconstrução de código ❖ Devemos enxergar a reconstrução de código como uma conta de uma casa ❖ Sempre devemos estar em dia ❖ Reconstrução seria a realização de pequenas modificações no código, sem mexer na lógica do software ❖ Não adicionamos novos recursos ou fixamos bugs
  • 4. ❖ A reconstrução deve ocorrer desde o início do projeto ❖ Para que a mudança sempre seja menos trabalhosa ❖ Diminuição do custo de mudança Reconstrução de código
  • 5. Reconstrução de código ❖ Se o programador sempre tiver técnicos débitos no seu código ❖ Significa que ele sempre estar tentando inovar ❖ Acumulação de débitos gera muitos problemas
  • 6. Pagamento de débito de código Princípio Ágil ❖ Atenção contínua a excelência técnica e uma boa melhora ágil no design Imagem 13.3
  • 7. Reconstrução consistente e contínua ❖ Trabalhar duro e receber suas recompensas ❖ Reconstrução agressiva significa que o programador a deixou para o final da iteração ❖ Deve-se reconstruir o código diariamente ❖ Quando a reconstrução e feita constantemente é quase impossível de se perceber a diferença
  • 8. Reconstrução consistente e contínua Imagem 13.3.1
  • 9. Reconstrução consistente e contínua Imagem 13.3.2
  • 10. Reconstrução consistente e contínua ❖ Com Apenas esse três passos de reconstrução: 1. Renomeação de variáveis e métodos 2. Deixar variáveis na mesma linha (no caso de métodos booleanos) 3. Extrair métodos (deixar os passos do método mais visíveis) http://www.greenfoot.org/doc/tut-3
  • 11. Reconstrução consistente e contínua ❖ Esses três passos são importantes para eventuais emergências que a equipe possa ter, como consertar bugs, e fazer mudanças críticas ❖ Observe sua situação, e veja o que precisa ser feito,faça agora o que você acha que pode lhe causar problemas futuros, caso deixe para fazer depois
  • 12. Integração contínua: prontidão no processo de produção ❖ Criação de uma cultura de uma produção que se encontra em prontidão e ser ter a capacidade de demonstrar nosso produto para qualquer pessoa, a qualquer hora, em qualquer lugar.
  • 13. Integração contínua: prontidão no processo de produção ❖ Em uma equipe que trabalha o conceito de prontidão no processo de prontidão podemos observar que: 1. A equipe possui um repositório único para o código fonte, onde todos podem alterar o código, sem interferir nas mudanças dos outros membros 2. As mudanças são integradas ao longo de cada dia, para que todos da equipe sabiam o que acontece no sistema
  • 14. Integração contínua: cultura de produção de prontidão ❖ Desenvolver software se faz da mesma forma em todo lugar, quanto mais o programador demorar para reconstruir o software, mais difícil será fazer manutenção do mesmo
  • 15. Como isso funciona ? ❖ Para implementar integração contínua ao código, sáo necessários alguns passos: 1. Um repositório para o código 2. Um processo de check-in 3. Um processo de teste automatizado 4. Boa vontade para trabalhar com pequenas partes do projeto por vez
  • 16. Repositório de código ❖ Possuir um único local para todos da equipe alocarem o código e editarem Imagem 15.3
  • 17. Processo automatizado de check-in do código Imagem 15.5
  • 18. Processo automatizado de check-in do código ❖ Podemos conceituar o processo automatizado de check-in como sendo a elaboração e realização de diversos tipos de teste contra o código em questão, para a retirada de todos os erros visíveis pelos stakeholders.
  • 19. Processo automatizado de check-in do código ❖ Para um processo automatizado de check-in de um código é necessários: 1. Utilizar a última versão do código, em seu repositório 2. Fazer alterações 3. Rodar testes até eliminar os erros visualizados 4. Adquirir novamente a última versão do código, em seu repositório 5. Realizar novos testes para remover possíveis novos problemas 6. Finalizar processo de check-in
  • 20. Boas e más práticas no processo de check- in do código Imagem 15.5.1
  • 21. Boas práticas no processo de check-in do código 1. Checar por versões recentes do código em seu repositório 2. Rodar todos os testes 3. Fazer check-ins regularmente 4. Deixar como prioridade códigos em que os testes não foram realizados com sucesso
  • 22. Más práticas no processo de check-in do código 1. Deixar o código com mais problemas depois de ter rodado os testes 2. Checar códigos com problemas 3. Comentar códigos que já não são mais utilizados
  • 23. Criação de um teste automatizado ❖ “A chave para qualquer construção(código) automatizada - quanto menos envolvimento humano,melhor.” ❖ Muitas linguagens atualmente possuem seus frameworks automatizados
  • 24. Criação de um teste automatizado Imagem 15.6
  • 25. Criação de um teste automatizado ❖ Esse processo consiste em 4 passos simples: 1. Cada membro da equipe realiza modificações no código e colocam no mesmo repositório 2. O sistema verifica as modificações de cada membro 3. Se caso houver algum conflito de alteração, ou se determinada alteração pode gerar alguma outro erro
  • 26. Criação de um teste automatizado 4. O sistema avisa as membro para que os membros decidam qual modificação ficará, ou modificar novamente o código para retirar o erro que foi inserido
  • 27. E se o programador não tiver permissão para aplicar métodos ágeis ? Imagem 15.8
  • 28. E se o programador não tiver permissão para aplicar métodos ágeis ? ❖ Ao final se torna tudo questão de escolha ❖ Ninguém pode fazer você parar de produzir software de alta qualidade ❖ Não fale para outra pessoa o que fazer ❖ Aceita que outras pessoas não estarão com você para lhe ajudar ❖ Apenas faça o que tem que ser feito
  • 29. Não se preocupe em se tornar ágil ❖ Ser ágil é uma jornada, não um destino ❖ Então você nunca seja realmente a agilidade ❖ E não esqueça que não é o fato de ser você ser ágil ou não, mas você produzir produtos de qualidade
  • 30. Referências The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer. 13.2 The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer, p.215. 13.3.1 The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer, p.218.
  • 31. Referências 13.3.2 The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer, p.221. 15.3 The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer, p.239. 15.5 The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer, p.242.
  • 32. Referências 15.5.1 The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer, p.243. 15.6 The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer, p.245. 15.8 The Agile Samurai: How masters deliver great softwares,Rasmusson Jonathan,Susannah Davidson Pfalzer, p.248.
  • 33. Instituto Federal de Pernambuco. Aluno(a): Laura Regina Morais de Oliveira. Turma:2º período. Curso:Tecnologia em Análise e Desenvolvimento de Sistemas. Prof.:Marcos André. Disciplina: Engenharia de Software.