O software pode ser pensado como passando por um ciclo de vida, ou seja, estágios sucessivos de desenvolvimento. As principais etapas são mostradas no diagrama a seguir.
Cada estágio do ciclo de vida pode ser automatizado em maior ou menor grau. A automação pode assumir a forma de substituição completa de um processo manual por um automatizado ou de compartilhamento colaborativo de trabalho entre diferentes membros de uma equipe. Nas equipes de desenvolvimento de software modernas e maduras, a maioria dos processos é automatizada.
Automation Consultants tem ampla experiência na construção e modificação de pilhas de desenvolvimento automatizadas compostas por uma ampla gama de ferramentas diferentes.
Os requisitos expressam o que o software em questão deve fazer. No desenvolvimento ágil, eles assumem a forma de “épicos” e “histórias”. O gerenciamento de requisitos é automatizado por meio de ferramentas de colaboração como Atlassian Confluence e IBM Rational DOORS Next Generation. Essas ferramentas permitem que diferentes membros da equipe escrevam requisitos e sempre vejam as versões mais recentes dos requisitos de sua equipe. Sem essas ferramentas, os requisitos normalmente são escritos em um processador de texto e enviados por email entre as partes interessadas, o que é muito menos eficiente. Recursos adicionais permitem a revisão e aprovação de requisitos e a transformação automatizada de requisitos em tarefas de desenvolvimento.
Em alto nível, ou seja. No nível da arquitetura, os projetos de software são frequentemente concebidos manualmente, embora sejam frequentemente armazenados e revisados ​​em ferramentas colaborativas como o Atlassian Confluence.
O desenvolvimento de software normalmente é gerenciado por ferramentas colaborativas de gerenciamento de projetos, na maioria dos casos, ferramentas ágeis de gerenciamento de projetos. O líder do setor é Atlassian Jira Software. Cada desenvolvedor escreve código em sua própria instância de um ambiente de desenvolvimento integrado (IDE), como Eclipse, Xcode e Visual Studio. O código-fonte é armazenado em um repositório de código-fonte que rastreia as diferentes versões do código à medida que são desenvolvidas. O código da equipe é armazenado em um repositório central de código-fonte que, além de rastrear versões, resolve quaisquer conflitos que possam surgir de mais de um desenvolvedor trabalhando no mesmo trecho de código. Os IDEs dos desenvolvedores estão vinculados a um ou mais repositórios de código-fonte. Em alguns casos, os desenvolvedores enviam o código diretamente para o repositório central. Em outros, eles armazenam seu código em um repositório local e o enviam periodicamente do repositório local para o repositório central. O principal repositório de código-fonte é o Git. O próprio Git é gratuito e de código aberto. Vários fornecedores fornecem sistemas de repositório on-line ou locais baseados em Git, incluindo GitHub, Atlassian Bitbucket e Gitlab. Outros repositórios de código-fonte incluem Microsoft Team Foundation Version Control (TFVC), Subversion e controle de código-fonte IBM Rational Team Concert (RTC).
O teste de software se presta à automação e é uma das primeiras áreas do ciclo de vida a ser automatizada. O teste é comumente organizado em fases, as mais comuns estão resumidas abaixo.
|Teste por desenvolvedores de pequenas unidades de código, como classes e métodos individuais.
|Geralmente automatizado com ferramentas como JUnit. Em alguns projetos, o teste unitário de todo o código é obrigatório.
|Teste de integração de sistema (SIT)
|Testes por testadores de todo o produto de software desenvolvido até o momento, usando as interfaces (interfaces de usuário e outras interfaces)
|A automação é muito comum em projetos ágeis e menos em projetos tradicionais (cascata). O principal benefício da automação está no teste de regressão, ou seja, no novo teste de todo o produto para garantir que a nova funcionalidade não quebrou as partes do produto que funcionavam antes, ou seja, não fez com que elas “regredissem”. Ferramentas como HP UFT, Rational Functional Tester, eggPlant e Selenium são usadas para SIT.
|Teste de aceitação do usuário (UAT)
|Teste por usuários finais do produto de software completo, muitas vezes logo antes da entrega.
Os testes não funcionais, como os testes de desempenho, são normalmente automatizados, usando ferramentas de teste de desempenho.
A implantação automatizada é comum em equipes de desenvolvimento maduras como parte da integração/implantação contínua (CI/CD). Ferramentas de CI/CD, como Bamboo e Jenkins, podem armazenar e executar os scripts necessários para construir o software em desenvolvimento e, em seguida, implantá-lo no(s) ambiente(s) desejado(s). Eles monitoram em tempo real os repositórios de código-fonte do projeto e, sempre que um novo código é confirmado, eles constroem instantaneamente o código e implantam o executável resultante em um ou mais ambientes, pronto para teste. Eles podem então acionar um conjunto de testes automatizados, armazenar o resultado dos testes e alertar as partes interessadas específicas sobre os resultados dos testes.
Depois que um produto de software é considerado adequado para uso, ele é liberado e entra em operação regular. O gerenciamento de aplicativos baseados em servidor pode ser automatizado de muitas maneiras diferentes. A automação é indispensável para organizações que gerenciam um grande número de servidores, como as grandes empresas de tecnologia, e também é amplamente utilizada por outras grandes organizações e muitas outras menores. As ferramentas e técnicas são amplamente abrangidas pelo termo DevOps. DevOps é um assunto muito amplo. Alguns destaques de alto nível são fornecidos abaixo.
|Os servidores são máquinas virtuais (VMs), em vez de máquinas físicas. Ou seja, rodam em um software que simula um servidor físico.
|Semelhante às VMs, mas mais leve. Eles são otimizados para executar um único aplicativo e têm muito menos sobrecarga, tornando muitas vezes mais eficiente executar aplicativos em contêineres do que em VMs.
|Ferramentas para gerenciar um grande número de contêineres.
| Kubernetes, Docker Swarm
|Infraestrutura como Código (IaS)
|Armazene conjuntos inteiros de infraestrutura, servidores, sistemas operacionais de redes e aplicativos como código. O código pode ser executado para criar ambientes inteiros em minutos.
|Armazena e gerencia a configuração de conjuntos de servidores. Há alguma sobreposição entre o gerenciamento de configuração e a infraestrutura como código, mas, em geral, o gerenciamento de configuração funciona em um nível inferior e mais detalhado.
|Chef, Marionete, Saltstack, Ansible, Vagrant
|Monitoramento em tempo real de infraestrutura e aplicações, combinado com alertas acionados quando limites predefinidos são violados.
|App Dynamics, New Relic, Splunk, Dynatrace