Este documento discute os desafios do desenvolvimento de software no mundo real em comparação com o mundo ideal, onde todas as melhores práticas são perfeitamente aplicadas. Ele cobre tópicos como qualidade vs desenvolvimento, pirâmide de testes, CI/CD, boas práticas de código e agilidade. O documento também fornece indicações de estudos adicionais para aperfeiçoar as práticas de desenvolvimento de software.
O documento introduz o TDD (Desenvolvimento Orientado a Testes) como um estilo de vida e não apenas uma tarefa. Explica que os testes devem ser construídos antes do código e que o foco principal é fazer os testes passarem, e não a implementação em si. Também discute os benefícios do TDD como código de melhor qualidade e redução de bugs.
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-sourceRaphael Paiva
Apresentado no Scrum Gathering Rio 2015.
Nesta apresentação falo sobre os princípios de Continuous Delivery e como implementar um release pipeline apenas com ferramentas gratuitas e de código aberto, como Docker, Fabric e Jenkins.
Este documento resume boas práticas de desenvolvimento ágil, incluindo TDD e BDD. Ele discute frameworks como JUnit e TestNG para TDD e easyb e JBehave para BDD. Também aborda os benefícios dessas técnicas como qualidade de código e segurança e desafios como curva de aprendizado.
Segunda aula sobre testes, na qual é apresentada a turma a regra fundamental de desenvolvimento orientado a testes, o desafio existente no desenvolvimento e manutenção de software e como podemos manter a qualidade interna e externa de nosso código com TDD e ATDD. Por fim é apresentado o ciclo de desenvolvimento com TDD e como conseguimos software melhor e mais condizente com as necessidades de nosso clientes com ATDD.
O documento apresenta uma palestra sobre DevOps. Aborda tópicos como a história do DevOps, suas definições e princípios-chave, o ciclo DevOps, práticas iniciais e avançadas, níveis de maturidade e ferramentas. O objetivo é fornecer uma visão geral do que é DevOps e como iniciar sua implementação de forma gradual.
O documento discute o conceito de DevOps, começando por descrever sua origem em uma conferência em 2009 sobre a cooperação entre desenvolvedores e operações na Flickr. Apresenta os principais problemas quando essas equipes trabalham separadas e os pilares técnicos e culturais de DevOps, como infraestrutura automatizada, integração contínua e mentalidade de respeito mútuo e compartilhamento de responsabilidades.
O documento discute a importância da reconstrução contínua e integração do código para manter a qualidade e prontidão do software. Ele explica que pequenas modificações frequentes no código permitem mudanças futuras menos trabalhosas. Também descreve os benefícios da integração contínua como a capacidade de demonstrar o produto a qualquer momento.
O documento discute a integração contínua e as ferramentas para implementá-la. Resume que a integração contínua automatiza o processo de desenvolvimento através de commits frequentes, builds e testes automatizados para reduzir riscos e aumentar a qualidade do código.
O documento introduz o TDD (Desenvolvimento Orientado a Testes) como um estilo de vida e não apenas uma tarefa. Explica que os testes devem ser construídos antes do código e que o foco principal é fazer os testes passarem, e não a implementação em si. Também discute os benefícios do TDD como código de melhor qualidade e redução de bugs.
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-sourceRaphael Paiva
Apresentado no Scrum Gathering Rio 2015.
Nesta apresentação falo sobre os princípios de Continuous Delivery e como implementar um release pipeline apenas com ferramentas gratuitas e de código aberto, como Docker, Fabric e Jenkins.
Este documento resume boas práticas de desenvolvimento ágil, incluindo TDD e BDD. Ele discute frameworks como JUnit e TestNG para TDD e easyb e JBehave para BDD. Também aborda os benefícios dessas técnicas como qualidade de código e segurança e desafios como curva de aprendizado.
Segunda aula sobre testes, na qual é apresentada a turma a regra fundamental de desenvolvimento orientado a testes, o desafio existente no desenvolvimento e manutenção de software e como podemos manter a qualidade interna e externa de nosso código com TDD e ATDD. Por fim é apresentado o ciclo de desenvolvimento com TDD e como conseguimos software melhor e mais condizente com as necessidades de nosso clientes com ATDD.
O documento apresenta uma palestra sobre DevOps. Aborda tópicos como a história do DevOps, suas definições e princípios-chave, o ciclo DevOps, práticas iniciais e avançadas, níveis de maturidade e ferramentas. O objetivo é fornecer uma visão geral do que é DevOps e como iniciar sua implementação de forma gradual.
O documento discute o conceito de DevOps, começando por descrever sua origem em uma conferência em 2009 sobre a cooperação entre desenvolvedores e operações na Flickr. Apresenta os principais problemas quando essas equipes trabalham separadas e os pilares técnicos e culturais de DevOps, como infraestrutura automatizada, integração contínua e mentalidade de respeito mútuo e compartilhamento de responsabilidades.
O documento discute a importância da reconstrução contínua e integração do código para manter a qualidade e prontidão do software. Ele explica que pequenas modificações frequentes no código permitem mudanças futuras menos trabalhosas. Também descreve os benefícios da integração contínua como a capacidade de demonstrar o produto a qualquer momento.
O documento discute a integração contínua e as ferramentas para implementá-la. Resume que a integração contínua automatiza o processo de desenvolvimento através de commits frequentes, builds e testes automatizados para reduzir riscos e aumentar a qualidade do código.
Este documento discute o papel do QA em times ágeis de desenvolvimento de software. Ele explica que o QA não é apenas responsável pelos testes e sim um integrante valioso do time, promovendo práticas que garantam a qualidade do produto. Também aborda desafios culturais como a percepção do QA como portador de más notícias e a necessidade de envolver todo o time no processo de garantia da qualidade.
O documento discute se o jCompany Developer é um gerador de código. Apresenta que jCompany não é um gerador de código pois utiliza orientação a objetos, reuso de frameworks, padrões de mercado e independência tecnológica ao invés de simples geração de código. Geradores de código possuem problemas como dependência do fabricante e perda de conhecimento técnico.
O documento apresenta Kamilla Queiróz, analista de testes que discute o futuro dos analistas de testes no cenário ágil, incluindo novas habilidades como programação e integração contínua. O documento também aborda tópicos como testar testes unitários, qualidade de código e especificações vivas.
Quem nunca ouviu, "mas é só mais campinho na tela?". Nesta palestra compartilharemos com vocês como estamos conscientizando a equipe e os demais setores da empresa da importância de avaliar o impacto de alterações nos sistemas, mesmo que sendo apenas uma linha de código. Iremos apresentar os aprendizados, desafios e erros que já enfrentamos nestes 12 meses de uso e evolução do processo de desenvolvimento na HostGator America Latina com fases/atividades mais bem definidas e a importância de perpetuar esta visão para os demais setores da empresa. Além disso, apresentar sobre o presente, o crescimento e o futuro desta nova cultura voltada a usabilidade, qualidade, escala e segurança.
O documento discute testes automatizados de software usando a técnica de Test Driven Development (TDD). Apresenta os principais tipos de testes como unidade, integração e aceitação. Explica o ciclo TDD de escrever testes primeiro para codificar (vermelho-verde-amarelo) e como isso ajuda no design do sistema.
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Trends
O documento discute a importância da automação de testes no DevOps, destacando que ela permite um feedback mais rápido, monitoramento contínuo da qualidade de software e menor tempo para lançamento de novas funcionalidades com menos erros.
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas já que processos de desenvolvimento são muitas vezes burocráticos Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas:Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
O documento discute os problemas com desenvolvimento de software tradicional e apresenta Scrum como uma abordagem ágil para gerenciar complexidade e mudança. Scrum define papéis como Product Owner, Time e Scrum Master e um processo baseado em sprints curtos com planejamento, daily scrums, revisões e retrospectivas. Estudos mostram que Scrum pode entregar software mais rápido e de melhor qualidade.
O documento apresenta os principais conceitos e benefícios do Test-Driven Development (TDD). O TDD envolve escrever testes unitários antes de implementar funcionalidades para garantir a qualidade do código e um design flexível. Ao contrário de uma abordagem tradicional de teste, o TDD requer disciplina para escrever pequenos testes e código de forma incremental.
Este documento discute a automação de testes em projetos ágeis. Ele descreve como os testes ágeis são integrados ao processo de desenvolvimento, frequentemente automatizados, e realizados em todas as camadas do sistema. Além disso, explica como técnicas como testes unitários, BDD e ferramentas como Cucumber e Pyccuracy podem ser usadas para automatizar testes funcionais e de aceitação de forma a apoiar a entrega contínua em metodologias ágeis.
Este documento discute mitos comuns sobre o desenvolvimento de software e apresenta soluções ágeis. Alguns mitos abordados incluem: (1) focar demais em planejamento detalhado e contratos formais não é adequado para projetos de software, (2) divisão excessiva de tarefas e especialização não levam a bons resultados, e (3) análise e modelagem não precisam ser excessivamente formais para gerar código de qualidade. Abordagens ágeis como desenvolvimento iterativo, colaboração em equipe e foco na entrega de
Testes de Performance na Nuvem com JMeter e BlazemeterElias Nogueira
O documento discute testes de desempenho e escalabilidade na nuvem usando as ferramentas JMeter e BlazeMeter. O autor, Elias Nogueira, apresenta um caso sobre a migração de um sistema desktop para web e a necessidade de testes de performance sem infraestrutura física.
O documento discute as facetas do desenvolvedor ágil, apresentando diversas técnicas e práticas ágeis como Clean Code, Refatoração, Testes Automatizados, TDD/BDD, Pair Programming, Continuous Integration e Continuous Delivery. O desenvolvedor ágil é descrito como um "Zen Programmer" que encara os problemas com naturalidade e vê a programação como um processo criativo e de aperfeiçoamento contínuo.
O documento apresenta uma breve introdução sobre metodologias ágeis, desde como surgiram até os principais métodos e técnicas ágeis. É descrita a crise de software dos anos 1980 e como as metodologias ágeis surgiram para resolver esses problemas, com destaque para o Manifesto Ágil criado em 2001. Os principais métodos ágeis como Scrum, XP e Kanban são resumidos, assim como várias técnicas como histórias de usuário, daily meetings e programação em par.
O documento discute como as práticas do Extreme Programming (XP) se tornaram menos populares ao longo dos anos, apesar de serem consideradas importantes para a construção de software de qualidade. Apresenta possíveis razões para isso, como a ênfase maior em gestão do que em engenharia e a dificuldade de mudança cultural. Defende que equipes ágeis devem concentrar-se mais nas disciplinas técnicas do XP e trazer essas práticas de volta.
O documento discute o futuro dos analistas de testes no contexto ágil, propondo o termo "DevQA" para descrever seu papel integral na equipe de desenvolvimento. Também aborda tópicos como testes unitários, qualidade de código, mutação e especificações vivas.
O documento descreve a Vinta, um estúdio de software que acredita no desenvolvimento ágil e iterativo em parceria com o cliente. A Vinta possui uma equipe experiente e trabalha com gerenciamento de projetos via Basecamp, testes automatizados, revisão de código e entrega contínua para manter o cliente envolvido durante todo o processo.
Aula 1
O que é software?
Quem faz o software?
Por que um software é importante?
Quais são os passos para se fazer um software?
Como tenho certeza que fiz um software corretamente?
Kent Beck criou o Extreme Programming (XP) para levar as práticas ágeis a níveis extremos, com foco no código, testes frequentes, feedback constante e comunicação entre a equipe. O XP envolve atividades como codificação, teste, escuta de clientes e modelagem para desenvolver software com requisitos vagos de forma ágil.
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
Apresentado para o Pop-ES e NPD da Ufes. Conheça o significado de DevOps e como ele pode apoiar entregas mais rápidas de software por meio da mudança de cultura, automatização entre outras...
Este documento discute o papel do QA em times ágeis de desenvolvimento de software. Ele explica que o QA não é apenas responsável pelos testes e sim um integrante valioso do time, promovendo práticas que garantam a qualidade do produto. Também aborda desafios culturais como a percepção do QA como portador de más notícias e a necessidade de envolver todo o time no processo de garantia da qualidade.
O documento discute se o jCompany Developer é um gerador de código. Apresenta que jCompany não é um gerador de código pois utiliza orientação a objetos, reuso de frameworks, padrões de mercado e independência tecnológica ao invés de simples geração de código. Geradores de código possuem problemas como dependência do fabricante e perda de conhecimento técnico.
O documento apresenta Kamilla Queiróz, analista de testes que discute o futuro dos analistas de testes no cenário ágil, incluindo novas habilidades como programação e integração contínua. O documento também aborda tópicos como testar testes unitários, qualidade de código e especificações vivas.
Quem nunca ouviu, "mas é só mais campinho na tela?". Nesta palestra compartilharemos com vocês como estamos conscientizando a equipe e os demais setores da empresa da importância de avaliar o impacto de alterações nos sistemas, mesmo que sendo apenas uma linha de código. Iremos apresentar os aprendizados, desafios e erros que já enfrentamos nestes 12 meses de uso e evolução do processo de desenvolvimento na HostGator America Latina com fases/atividades mais bem definidas e a importância de perpetuar esta visão para os demais setores da empresa. Além disso, apresentar sobre o presente, o crescimento e o futuro desta nova cultura voltada a usabilidade, qualidade, escala e segurança.
O documento discute testes automatizados de software usando a técnica de Test Driven Development (TDD). Apresenta os principais tipos de testes como unidade, integração e aceitação. Explica o ciclo TDD de escrever testes primeiro para codificar (vermelho-verde-amarelo) e como isso ajuda no design do sistema.
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Trends
O documento discute a importância da automação de testes no DevOps, destacando que ela permite um feedback mais rápido, monitoramento contínuo da qualidade de software e menor tempo para lançamento de novas funcionalidades com menos erros.
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas já que processos de desenvolvimento são muitas vezes burocráticos Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas:Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
O documento discute os problemas com desenvolvimento de software tradicional e apresenta Scrum como uma abordagem ágil para gerenciar complexidade e mudança. Scrum define papéis como Product Owner, Time e Scrum Master e um processo baseado em sprints curtos com planejamento, daily scrums, revisões e retrospectivas. Estudos mostram que Scrum pode entregar software mais rápido e de melhor qualidade.
O documento apresenta os principais conceitos e benefícios do Test-Driven Development (TDD). O TDD envolve escrever testes unitários antes de implementar funcionalidades para garantir a qualidade do código e um design flexível. Ao contrário de uma abordagem tradicional de teste, o TDD requer disciplina para escrever pequenos testes e código de forma incremental.
Este documento discute a automação de testes em projetos ágeis. Ele descreve como os testes ágeis são integrados ao processo de desenvolvimento, frequentemente automatizados, e realizados em todas as camadas do sistema. Além disso, explica como técnicas como testes unitários, BDD e ferramentas como Cucumber e Pyccuracy podem ser usadas para automatizar testes funcionais e de aceitação de forma a apoiar a entrega contínua em metodologias ágeis.
Este documento discute mitos comuns sobre o desenvolvimento de software e apresenta soluções ágeis. Alguns mitos abordados incluem: (1) focar demais em planejamento detalhado e contratos formais não é adequado para projetos de software, (2) divisão excessiva de tarefas e especialização não levam a bons resultados, e (3) análise e modelagem não precisam ser excessivamente formais para gerar código de qualidade. Abordagens ágeis como desenvolvimento iterativo, colaboração em equipe e foco na entrega de
Testes de Performance na Nuvem com JMeter e BlazemeterElias Nogueira
O documento discute testes de desempenho e escalabilidade na nuvem usando as ferramentas JMeter e BlazeMeter. O autor, Elias Nogueira, apresenta um caso sobre a migração de um sistema desktop para web e a necessidade de testes de performance sem infraestrutura física.
O documento discute as facetas do desenvolvedor ágil, apresentando diversas técnicas e práticas ágeis como Clean Code, Refatoração, Testes Automatizados, TDD/BDD, Pair Programming, Continuous Integration e Continuous Delivery. O desenvolvedor ágil é descrito como um "Zen Programmer" que encara os problemas com naturalidade e vê a programação como um processo criativo e de aperfeiçoamento contínuo.
O documento apresenta uma breve introdução sobre metodologias ágeis, desde como surgiram até os principais métodos e técnicas ágeis. É descrita a crise de software dos anos 1980 e como as metodologias ágeis surgiram para resolver esses problemas, com destaque para o Manifesto Ágil criado em 2001. Os principais métodos ágeis como Scrum, XP e Kanban são resumidos, assim como várias técnicas como histórias de usuário, daily meetings e programação em par.
O documento discute como as práticas do Extreme Programming (XP) se tornaram menos populares ao longo dos anos, apesar de serem consideradas importantes para a construção de software de qualidade. Apresenta possíveis razões para isso, como a ênfase maior em gestão do que em engenharia e a dificuldade de mudança cultural. Defende que equipes ágeis devem concentrar-se mais nas disciplinas técnicas do XP e trazer essas práticas de volta.
O documento discute o futuro dos analistas de testes no contexto ágil, propondo o termo "DevQA" para descrever seu papel integral na equipe de desenvolvimento. Também aborda tópicos como testes unitários, qualidade de código, mutação e especificações vivas.
O documento descreve a Vinta, um estúdio de software que acredita no desenvolvimento ágil e iterativo em parceria com o cliente. A Vinta possui uma equipe experiente e trabalha com gerenciamento de projetos via Basecamp, testes automatizados, revisão de código e entrega contínua para manter o cliente envolvido durante todo o processo.
Aula 1
O que é software?
Quem faz o software?
Por que um software é importante?
Quais são os passos para se fazer um software?
Como tenho certeza que fiz um software corretamente?
Kent Beck criou o Extreme Programming (XP) para levar as práticas ágeis a níveis extremos, com foco no código, testes frequentes, feedback constante e comunicação entre a equipe. O XP envolve atividades como codificação, teste, escuta de clientes e modelagem para desenvolver software com requisitos vagos de forma ágil.
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
Apresentado para o Pop-ES e NPD da Ufes. Conheça o significado de DevOps e como ele pode apoiar entregas mais rápidas de software por meio da mudança de cultura, automatização entre outras...
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Daniel Carvalhinho
O documento discute a importância de se ter uma estratégia de teste de qualidade (QA) para projetos de desenvolvimento de software. Ele explica que a falta de planejamento e execução adequados de testes pode levar a atrasos, custos extras e problemas para o cliente. Além disso, apresenta diversas ferramentas e técnicas para se realizar testes funcionais, de regressão, de fumaça, análise estática de código, testes em navegadores, de layout, de velocidade e sob carga, entre outros.
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com Visual Studio 2019. Mais informações podem ser obtidas em www.developeracademy.com.br ou www.developeracademy.dev.
1. O documento discute estratégias para automação de testes de software, comparando testes manuais e automatizados e abordando considerações importantes para a implantação e manutenção de testes automatizados.
2. É apresentada uma introdução sobre testador vs desenvolvedor de testes, record e codificação, escopo de automação e o "universo D" de metodologias como TDD e BDD.
3. O valor da automação é discutido, assim como pontos para identificar o que automatizar versus não automatizar, considerações para a impl
O documento apresenta os conceitos e práticas do DevOps, descrevendo: (1) O que é DevOps, como uma filosofia que promove a integração entre equipes de desenvolvimento e operações; (2) A história do DevOps e sua evolução ao longo dos anos; (3) Ferramentas comumente usadas no DevOps.
O documento discute os primeiros passos em DevOps com MuleSoft, incluindo: (1) o significado de DevOps e as diferenças entre Continuous Integration e Continuous Deployment; (2) como garantir boa qualidade de código Mule usando ferramentas como SonarQube; (3) integração com esteiras de CI/CD como Azure DevOps.
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryRodrigo Russo
O documento discute princípios e práticas de Continuous Delivery, incluindo:
1) A importância de entregas frequentes de software para satisfazer o cliente;
2) A necessidade de automatizar processos como builds, testes e deployments para permitir entregas contínuas;
3) Diferentes níveis de testes que devem ser automatizados para garantir a qualidade a cada build.
O documento descreve o que é Extreme Programming (XP), seus valores e práticas ágeis. O XP prioriza a comunicação direta, entregas constantes de software e feedback frequente do cliente. Seus papéis incluem desenvolvedores, testadores e um cliente no local para guiar o desenvolvimento.
Empresas de ponta possuem ciclos de entrega de software medido em dias ao invés de meses. Essa agilidade é alcançada através de práticas de DevOps como entrega contínua, da qual permite automatizar a construção, testes e deploy mudanças no código da aplicação. Essa automação permite reconhecer problemas antecipadamente e aumentando a produtividade dos desenvolvedores.
Nesse webinar, vamos compartilhar os processos que os engenheiros da Amazon utilizam na prática de DevOps e discutir como você pode levar estes processos para sua empresa utilizando uma série de serviços (AWS CodePipeline e AWS CodeDeploy). Estes por sua vez, foram inspirados pela nossas ferramentas de desenvolvimento internos e cultura DevOps.
A metodologia XP promove valores como coragem, comunicação e simplicidade. Ela segue princípios como feedback rápido, presumir simplicidade e mudanças incrementais. O ciclo de vida do XP inclui planejamento, codificação, teste e refatoração em iterações semanais. O planejamento é feito no Jogo de Planejamento e o progresso é avaliado em Stand Up Meetings diários. A programação é feita em pares e o có
O documento discute os benefícios dos testes automatizados e do desenvolvimento guiado por testes (TDD), incluindo feedback imediato, prevenção de regressões, melhor design, refatoração segura e documentação executável. Também aborda como começar com TDD, corrigir bugs usando testes e ferramentas populares para testes no Java.
O documento discute arquitetura de software limpa, explicando que ela separa a lógica principal de negócios de detalhes externos como interface do usuário e banco de dados. Apresenta o conceito de adaptadores que conectam o domínio principal à camada externa e demonstra uma aplicação que armazena dados de usuários usando essa abordagem.
O documento discute a importância da qualidade de software e como alcançá-la. Apresenta os desafios comuns entre testadores e desenvolvedores e como a automação de testes com ferramentas como o Visual Studio podem ajudar a superá-los, melhorando a comunicação, reprodutibilidade de defeitos e agilidade.
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
O documento discute a automação de testes de software e a integração contínua. Ele apresenta diferentes tipos de testes que podem ser automatizados, como fumaça, unitário e de regressão. Ferramentas como Selenium e Hudson são descritas para auxiliar na automação e integração contínua. A integração contínua é definida como a prática de integrar frequentemente códigos desenvolvidos e executar testes automatizados para garantir a qualidade do software.
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
Slides do Minicurso ministrado pela ToolsCloud na Globalcode. Para se inscrever nas proximas turmas, acesse:
http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-a-alm-open-source
Para experimentar as ferramentas apresentadas no minicurso, você pode utilizar o ambiente de demonstração da ToolsCloud:
https://demo.toolscloud.net
User: toolscloud
Password: toolscloud
ToolsCloud -- As ferramentas que os desenvolvedores adoram, na nuvem!
Solução complete de ALM, open source e sem stress. Começe a usar no seu projeto hoje!
http://www.toolscloud.com
Docker, jenkins e gradle para tomar o controle de sua entregaHumberto Streb
O documento discute a implementação de Continuous Delivery em um projeto de software com mais de 1 milhão de linhas de código usando ferramentas como Docker, Jenkins e Gradle. Problemas como builds manuais, dependências compartilhadas e falta de automação foram resolvidos, melhorando a qualidade e permitindo entregas contínuas com menor risco. A mudança também focou em aspectos culturais para promover aprendizado e confiança entre times de negócios e desenvolvimento.
Semelhante a Desenvolvimento de software mundo ideal x mundo real (20)
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
7. A V E
NUE
7
O que é um desenvolvedor de
software (dev)?
Definições1
8. A V E
NUE
8
O que é um analista de qualidade
(qa)?
Introdução1
9. A V E
NUE
9
Dois mundos
Definições1
Mundo ideal Mundo real
● Relato do nosso conhecimento atual em
desenvolvimento de software voltado
para literatura.
● Relatos de experiências nossas e de
colegas na área de desenvolvimento.
● Realidade onde todas as boas práticas são
aplicadas da maneira correta, de acordo
com a realidade específica.
● Há restrição de dinheiro, tempo e
conhecimento de pessoas envolvidas com
desenvolvimento de software.
● Todas pessoas envolvidas com
desenvolvimento de software entendem a
importância de seguir princípios e práticas
consolidadas.
● É um grande desafio para pessoas mudarem
a forma de trabalho.
11. A V E
NUE
11
2
Taylorismo ● Separação do planejamento da execução
● Criação de um departamento separado de qualidade.
● Somente gerência toma decisões
Qualidade vs Desenvolvimento
Frederick Taylor
12. A V E
NUE
12
2
Toyota Production
System
Qualidade vs Desenvolvimento
Taiichi Ohno ("Pai" do TPS)
Shigeo Shingo ("Pai" do TPS e Poka Yoke)
● Todo trabalhador é responsável por toda a linha de
produção.
● Kaizen - Melhoria contínua
● Just in time
● Sistema para evitar falhas humanas (Poka Yoke)
13. A V E
NUE
13
Comparação
Qualidade vs Desenvolvimento2
Mundo ideal Mundo real
● QAs trabalhando junto com os Devs. ● Devs entregam um software para QAs
testarem.
● Código de teste é desenvolvido junto com
código de produção.
● Código de produção é desenvolvido,
sistema é publicado e então os testes são
desenvolvidos.
● Segundos após a escrita de um código é
possível saber se ele tem a qualidade
necessária. Sem estoque de código.
● Dias ou semanas após a escrita de um
código é possível saber se ele tem a
qualidade necessária.
17. The act of writing a unit test
is more an act of design
than of verification.
Robert C. Martin (Uncle Bob)
18.
19. A V E
NUE
19
Casquinha de
sorvete
Pirâmide de testes
Muitos testes manuais de interface.
Alguns testes de integração e end-to-end.
Muito poucos testes unitários.
Place your image here. Try to keep your image
within these boundaries.
And remove this text box later!
Again, remove this text box later!
One more time: remove this text box later!
3
20. A V E
NUE
20
Comparação
Pirâmide de testes3
Mundo ideal Mundo real
● Poucos testes end-to-end para garantir as
jornadas dos usuários.
● Muitos testes manuais repetitivos.
● Muito pouco teste manual, principalmente
exploratórios.
● Muitos testes de integração e end-to-end.
● Muitos testes unitários, melhorando o
design de código.
● Poucos testes unitários, deixando o design
de código ruim.
23. A V E
NUE
23
Continuous
Integration
CI/CD
Prática de desenvolvimento de software
onde Devs/QAs integram o código com uma
branch principal frequentemente.
Integrando frequentamente, é possível
detectar e corrigir erros mais rápidamente e
diminuir problemas de merge.
4
24. A V E
NUE
24
Continuous Delivery
CI/CD
Prática de desenvolvimento de software
onde o software é construído de uma forma
que pode ser publicado em produção a
qualquer momento.
Testes automatizados são uma peça chave
para Continuous Delivery ser possível.
4
25. A V E
NUE
25
Continuous
Deployment
CI/CD
Um passo além de Continuous Delivery, onde
toda alteração de código é automaticamente
publicada em produção, se toda pipeline
passar.
A grande vantagem é que não há mais a
pressão de um “dia de deploy” e pode-se
receber feedback mais rápido dos usuários.
4
26. A V E
NUE
26
Comparação
4
Mundo ideal Mundo real
● Os testes automatizados dão confiança para
o time que o software pode ser publicado
em produção.
● O time precisa passar por uma fase de
testes manual para ter confiança no código
fonte.
● O time não passa horas/dias resolvendo
conflitos.
● Desenvolvedores trabalham muito tempo
em branches separadas e merges pode
levar horas/dias.
● Sem “estoque” de código. O time tem um
feedback rápido dos usuários sobre as
alterações.
● Estresse em dias de deploy, demora para
receber feedback de usuários.
28. I'm not a great programmer;
I'm just a good programmer
with great habits.
Kent Beck
29. Nós somos aquilo que
fazemos repetidamente.
Excelência, então, não é um
modo de agir, mas um
hábito.Aristóteles
30. A V E
NUE
30
Análise estática de código
Análise de um código-fonte sem execução
do programa.
Boas práticas de código5
31.
32. A V E
NUE
32
Complexidade Ciclomática
Métrica que pode ser utilizada para
detectar código complexo e candidato a
refatoração.
Mais avançada do que simples número de
linhas.
Definido por Thomas J. MCCabe, 1976
Boas práticas de código5
33.
34.
35. A V E
NUE
35
SOLID
Princípios de programação orientada a
objetos com o objetivo de deixar o design
do software mais legível e flexível.
Boas práticas de código5
36. A V E
NUE
36
Design Patterns
Soluções típicas para problemas comuns
em desenvolvimento de software.
Boas práticas de código5
37. A V E
NUE
37
Code Review
Prática que aumenta a Propriedade
coletiva do código.
Boas práticas de código5
38. A V E
NUE
38
Comparação
Boas práticas de código5
Mundo ideal Mundo real
● Código com funções e classes pequenas e
fáceis de entender.
● Código com algumas classes e funções
grandes e de difícil entendimento.
● O time utiliza ferramentas de análise
estática de código diariamente.
● O time não utiliza ferramentas de análise
estática de código.
● O time tem um processo consistente de
code review.
● Cada desenvolvedor adiciona novas
features com a única preocupação de
atender o prazo da demanda.
● Todos devs do time se sentem confiantes
para alterar qualquer parte do sistema.
● Cada parte do sistema tem um
desenvolvedor como responsável.
44. A V E
NUE
44
Comparação
Agilidade6
Mundo ideal Mundo real
● Time entrega software funcionando
frequentemente.
● Time raramente faz entregas de software
funcionando.
● Time está preparado e recebe bem
mudanças no software.
● Time trabalha bastante na fase de análise
para evitar mudanças depois.
● Pessoas de negócio estão próximas dos
desenvolvedores no dia a dia.
● Desenvolvedores e pessoas de negócio
raramente conversam.
● O time decide a melhor forma de solução do
problema.
● Pessoas de fora do time decidem como as
soluções são desenvolvidas.
Pessoa que o principal papel é escrever a solução para resolver um problema do negocio
Pessoa que o principal papel é garantir que a solucao desenvolvida pelo time tem a qualidade necessária para o negocio
Não há verdade absoluta ou balas de prata, desenvolvimento de software é uma área complexa.
Relato do nosso conhecimento atual em desenvolvimento de software.
Realidade onde todas as boas práticas são aplicadas da maneira correta, de acordo com a realidade específica.
Todas pessoas envolvidas com desenvolvimento de software entendem a importância de seguir princípios e práticas consolidadas.
Relatos de experiências nossas e de colegas na área de desenvolvimento.
Há restrição de dinheiro, tempo e conhecimento de pessoas envolvidas com desenvolvimento de software.
É um grande desafio para pessoas mudarem a forma de trabalho.
Extreme programming -> Kent Beck
Engenharia social do taylorismo -> Engenheiros "educados" decidem como deve ser feito e os trabalhadores fazem o que são mandados "cegamente".
Autoridade vs Responsabilidade: Arquitetos mandando como deve ser feito e não fazendo junto com o time.
Taylor acreditava que os trabalhadores iriam trabalhar mal mas não tão mal para serem notados, por isso, era importante ter um departamento de qualidade.
Inovações do Taylorismo
Um de seus maiores legados foi “Princípios da Administração Científica”, livro que basicamente expõe a crença de Taylor na racionalização do trabalho.
- Princípio do planejamento;- Princípio da preparação dos trabalhadores:- Princípio do controle:- Princípio da execução;
Críticas ao taylorismo- exploração e mecanização do trabalhador- As ideias dos trabalhadores eram reprimidas e cabia somente à gerência tomar decisões quanto à produção, gerando também descontentamento e conflitos entre empregados e empregadores.
Se qualquer pessoa encontra um problema, puxa uma corda e toda a linha de produção é parada. Todos recursos da linha de produção são focados para encontrar a causa raiz e resolver o problema.
Kaizen -> Kai (Change) + zen (Good)
Kaizen dá voz à força de trabalho, capacitando os indivíduos para identificar áreas para melhoria e sugerir soluções práticas.
Controle de processo para melhorar a qualidade como um todo.
Just in time -> a matéria prima sempre vai chegar na fábrica na hora em que se precise dela
Com o Just in Time não existe sobra de estoque, tudo que é fabricado já tem um destino final certo.
Isso se aplica em software, onde não faz sentido estocar requisitos, código, documentação.
Se se escrever codigo que só vai ser usado em 6 meses, ele muito provavelmente terá que ser reescrito ou não vai funcionar.
8:20
Mike Cohn came up with this concept in his book Succeeding with Agile. It's a great visual metaphor telling you to think about different layers of testing. It also tells you how much testing to do on each layer.
End-to-end (e2e) tests are used to simulate the user journey. So the answer to this question is yet another question — how many user journeys exist in your application?
https://martinfowler.com/bliki/TestPyramid.html
Talvez mostrar diferentes piramides
O ato de escrever um teste de unidade é mais um ato de design do que de verificação.
8:30
Não é um ótimo programador, mas um bom programador com ótimos habitos.
PlataformaPlataforma open-source para inspeção contínua de código-fonte. Tem suporte para mais de 20 linguagens de programação. open-source para inspeção contínua de código-fonte. Tem suporte para mais de 20 linguagens de programação.
Padrão de solução para problemas comuns.
Melhora comunicação entre equipe de desenvolvimento.
Menos revisão e mais colaboração
8:45
Criado em 2001, é uma declaração de princípios que fundamentam o desenvolvimento ágil.
https://agilemanifesto.org/iso/ptbr/manifesto.html
Estamos descobrindo maneiras melhores de desenvolver
software, fazendo-o nós mesmos e ajudando outros a
fazerem o mesmo. Através deste trabalho, passamos a valorizar:
Indivíduos e interações mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Ou seja, mesmo havendo valor nos itens à direita,
valorizamos mais os itens à esquerda.
Princípios por trás do Manifesto Ágil
Nós seguimos estes princípios:
Nossa maior prioridade é satisfazer o cliente
através da entrega contínua e adiantada
de software com valor agregado.
Mudanças nos requisitos são bem-vindas,
mesmo tardiamente no desenvolvimento.
Processos ágeis tiram vantagem das
mudanças visando vantagem competitiva para o cliente.
Entregar frequentemente software funcionando,
de poucas semanas a poucos meses,
com preferência à menor escala de tempo.
Pessoas de negócio e desenvolvedores devem trabalhar
diariamente em conjunto por todo o projeto.
Construa projetos em torno de indivíduos motivados.
Dê a eles o ambiente e o suporte necessário
e confie neles para fazer o trabalho.
O método mais eficiente e eficaz de transmitir
informações para e entre uma equipe de desenvolvimento
é através de conversa face a face.
Software funcionando é a medida primária de progresso.
Os processos ágeis promovem desenvolvimento
sustentável. Os patrocinadores, desenvolvedores e
usuários devem ser capazes de manter um ritmo
constante indefinidamente.
Contínua atenção à excelência técnica e bom design
aumenta a agilidade.
Simplicidade--a arte de maximizar a quantidade de
trabalho não realizado--é essencial.
As melhores arquiteturas, requisitos e designs
emergem de equipes auto-organizáveis.
Em intervalos regulares, a equipe reflete sobre como
se tornar mais eficaz e então refina e ajusta seu
comportamento de acordo.
Busca de materiais
Documentacoes
Referenciais
Empresas Internacionais
Clean Code (Uncle Bob (Robert C. Martin))
TDD by example - Kent Beck
Extreme Programming Explained - Kent Beck
The Scrum Guide ( Ken Schwaber and Jeff Sutherland)
Head First Design Patterns (Elisabeth Freeman, Kathy Sierra)
Domain-Driven Design - Tackling Complexity in the Heart of Software (Eric Evans)
Agile Testing (Lisa Crispin)