Atender as necessidades de negócio através do desenvolvimento de software é um desafio para qualquer desenvolvedor. Hoje em dia, devemos sempre pensar em como tornar o processo de desenvolvimento mais rápido, porém, sem perda da qualidade do software e sem com que a aderência do projeto de software ao negócio seja prejudicada. Podemos ainda somar a este cenário caótico o ciclo de desenvolvimento de um software por si só, já que escrever sistemas computacionais é uma tarefa já bastante complicada. No fim, temos a dúvida: como podemos escrever aplicações rapidamente, aderentes ao mercado e aos requisitos de negócio e ainda garantir a qualidade e a maturidade da solução?
Hoje, abordagens modernas no desenvolvimento de software (como o feedback contínuo e a entrega contínua) são importantes para que tenhamos também um bom processo de gestão do software e consigamos atingir alguns dos objetivos citados anteriormente. Dentro dessa gestão moderna,, temos algumas tendências como as práticas ágeis e o DevOps. Porém, um dos principais pontos no processo de desenvolvimento de um software com qualidade é dar a todos a visibilidade do que está sendo feito… Para auxiliar o gerenciamento do ciclo de vida de um software e no auxílio da integração de todas as operações, dando justamente esta visibilidade mais global, surgiu um conjunto de ferramentas dentro de uma prática comumente referenciada como ALM.
Curso Gerenciamento de projetos - Fundamentos
Conhecer o cursoO que vem a ser o ALM?
ALM é uma sigla para Application Lifecycle Management (Gerenciamento do Ciclo de Vida de Aplicações). O ALM refere-se ao processo de governança envolvendo a gestão, desenvolvimento e entrega de software, combinando a gerência de negócio com a engenharia de software.
O ALM é fundamentado em 3 pilares, pilares estes considerados essenciais para o desenvolvimento de qualquer software: pessoas, processos e tecnologia. É importante garantir que estes pilares estejam alinhados e devidamente integrados para que tudo ocorra de forma eficiente durante o processo de desenvolvimento, manutenção e maturação de um software. Se esses pilares não estiverem alinhados e bem definidos, provavelmente o desenvolvimento do software não irá transcorrer com a sua máxima eficiência, seja no que diz respeito à velocidade de desenvolvimento ou à garantia de qualidade. Certamente, pessoas com um grau de comprometimento baixo com o projeto do software, a falta de processos bem definidos ou a utilização de tecnologias inadequadas, por exemplo, provocarão a criação de um software deficiente, ou até mesmo o fracasso do projeto como um todo.
Etapas de desenvolvimento de software dentro do ALM
Tradicionalmente, o ciclo de desenvolvimento de um software é dividido nas seguintes fases quando estamos tratando sobre ALM:
- Planejamento. Nesta fase, aspectos como a viabilidade do projeto, os riscos envolvidos e os recursos que serão necessários são previamente levantados;
- Definição. Nesta fase, estamos falando na maioria das vezes da tradicional análise de requisitos. As funcionalidades que o software deverá desempenhar são previamente levantadas e definidas de acordo com as necessidades constatadas e os recursos disponíveis (recursos estes obtidos na etapa anterior);
- Design ou modelagem. Neste ponto, a arquitetura técnica do projeto começa a tomar forma. Diagramas UML como diagramas de classe, de componentes e de sequência são tradicionalmente utilizados nesta fase para a documentação da estrutura técnica do projeto;
- Desenvolvimento. Esta etapa consiste basicamente na produção do código de maneira alinhada com os levantamentos da etapa anterior. O processo de acompanhamento com metodologias ágeis ou os testes a nível de unidades de software (como os testes unitários) podem ser enquadrados também nesta fase;
- Testes. Esta fase envolve o teste do software de uma maneira mais ampla. Aqui, é verificado se o software realmente está aderente aos requisitos levantados nas fases anteriores ou se o software realiza as integrações necessárias com outros componentes adjacentes ao projeto;
- Implantação. Neste ponto, o software é colocado “em produção” e disponibilizado para todos os usuários-alvo da solução.
É muito importante que as etapas do ciclo de vida de um software também devem estar integradas e devem “conversar” entre si, garantindo unidade e coesão ao projeto.
A relação entre automação, agilidade e o ALM
Em um primeiro momento, o ALM pode soar como algo muito engessado, chegando a ser similar a metodologias como RUP ou waterfall. Porém, a situação é completamente oposta. O ALM tem como premissa a automação do desenvolvimento, automação esta que deve ocorrer desde os requisitos até a entrega do software. No ALM, tudo que pode ser automatizado deve ser automatizado. Essa automação permite uma visualização de todas as fases de maneira mais minuciosa, permitindo identificar quais são os gargalos presentes e se há algo que está prejudicando o desenvolvimento praticamente em tempo real. Além disso, a automatização de processos tende a dar mais qualidade para estes processos envolvidos, removendo as possíveis interações humanas que podem deturpar os processos estabelecidos.
Dentro do ALM, também temos como metodologia a integração contínua, onde os membros do time devem integrar seu trabalho frequentemente, garantindo a entrega contínua de valor ao cliente, além de permitir a este acompanhar in loco o processo de evolução do projeto. Como precisamos dessa integração de maneira constante e rápida, é importante ter processos e controles bem definidos a respeito desta integração, evitando-se possíveis erros entre diferentes versões do software, por exemplo. Assim, você poderá ter uma melhor coordenação das atividades, desde os requisitos, modelagem, desenvolvimento, teste, manutenção e tudo mais que precisar. E, logicamente, este nível de maturidade só pode ser alcançado com o auxílio da automatização de algumas destas tarefas.
Curso Gerenciamento de Projetos - Avançado
Conhecer o cursoAlgumas ferramentas ALM
Algumas ferramentas ALM bem interessantes e utilizadas no mercado atualmente estão descritas abaixo.
As ferramentas da Atlassian, tradicionalmente o quarteto Jira + Confluence + Stash + Bamboo são famosas por sua aderência aos processos ALM. A Atlassian é uma empresa fornecedora de várias soluções de software, como o BitBucket por exemplo. Porém, o conjunto de ferramentas oferecidos pela Atlassian para auxiliar no processo de ALM, como o quarteto citado é que dão a fama à empresa. O Jira é uma ferramenta de gestão que permite acompanhamento de tarefas e monitoramento de performance da equipe em um único lugar centralizado. O Confluence é uma espécie de wiki, funcionando como uma base de conhecimento para os diferentes projetos. O Stash oferece a possibilidade de gerenciamento de repositórios de código in company de maneira integrada ao Jira e ao Confluence. Por fim, o Bamboo é uma ferramenta de gerenciamento e execução de integração contínua e implantação contínua que funciona também de maneira integrada às ferramentas previamente citadas.
O VSTS (agora chamado de Azure DevOps Services) é uma ferramenta da Microsoft que permite o gerenciamento de todas as etapas do ciclo de vida de um software em um único local. Ele oferece suporte às diferentes etapas do ciclo de desenvolvimento de um software através de várias ferramentas visuais e não-visuais que funcionam de maneira completamente integrada. Por exemplo: temos o Azure Pipelines para controlar e realizar o processo de integração contínua e implantação contínua de maneira automatizada. Temos também o Azure Repos, que funciona como local de armazenamento e gerenciamento de código. Também temos o Azure Boards, que permite acompanhar o processo de execução das diferentes fases do ciclo de vida de um software, além de permitir monitorar aspectos como a performance da equipe em tempo real;