Objetivo: abordar os conceitos iniciais do ciclo de vida de uma aplicação
Público: times de desenvolvimento, gestores, analistas, arquitetos, stakeholders e interessados em melhorar o processo de desenvolvimento de sua empresa

No contexto empresarial (grandes, médias, pequenas empresas, startups, etc.) do IT Systems Development, considerando a dificuldade de construir aplicações com a qualidade e valor desejados pelo usuário, o ALM pode ser então definido como o processo que guia a vida útil de uma aplicação desde a sua concepção, passando pela construção, operação e manutenção evolutiva.

alm-001

Diferença entre SDLC x ALM

  • SDLC (Software Development Lifecycle Management) inclui os processos relacionados ao DESENVOLVIMENTO da aplicação como requisitos, arquitetura, codificação, testes e gestão da configuração/projeto.
  • ALM (Application Lifecycle Management) inclui todo o ciclo de vida da APLICAÇÃO, desde a business idea, identificação da necessidade, riscos e desafios. Este ciclo geralmente é encerrado quando a aplicação não é mais utilizada pelo business, potencialmente alguns anos após o desenvolvimento inicial.

 

Pilares ALM

Os pilares que estruturam o ALM e trabalham de forma complementar para prover o gerenciamento do ciclo de vida aplicação:

alm-002

  • Pessoas – o time envolvido na gestão do ciclo de vida da aplicação inclui atribuições desde o alinhamento estratégico até a execução do desenvolvimento de sistemas. As empresas comumente concentram estas responsabilidades em: Executivo, PMO, Gerente de Projetos e Gerente de Operações; Analista de negócios, Arquiteto, Desenvolvedor, Tester e DBA
  • Processos – conjunto de boas práticas, artefatos, guias e manuais que orientam o desenvolvimento e manutenção de uma aplicação
  • Ferramentas – engloba meios/equipamentos/tecnologias que automatizam e facilitam a condução dos processos pelas pessoas

 

Fases do ALM

As fases do ciclo de vida da aplicação podem ser melhor organizadas da seguinte forma:

alm-003

  • Definição: em torno das necessidades e motivações organizacionais. Em método ágeis, por exemplo, a constante validação de produto mínimo viável ou até a identificação de novos mercados.
    • Iniciar: alocar os recursos iniciais – pessoas, processos e ferramentas
    • Definir: converge a ideia em estratégias para desenvolver novas aplicações, considerando os métodos e ferramentas
    • Escolher: a escolha das ferramentas, métodos e tecnologias adequadas para a aplicação é obtida com técnicas como ROI (retorno de investimento), aplicabilidade ao ambiente, etc.
  • Construção: mão na massa (hands on). É a execução do plano definido nas fases anteriores. Independente de um método específico para gerenciar – ágil, waterfall, etc. A restrição tripla (escopo/custo/tempo) além da qualidade deve ser considerada durante a execução. Lembre-se que código ruim não sobe para produção.
  • Operação: após o release da aplicação, precisamos manter o funcionamento adequado da aplicação neste ambiente. Os aspectos de infraestrutura, gestão dos chamados, monitoramento, suporte de fornecedores, entre outros são os assets desta fase. O framework do ITIL é um bom guia para apoiar na gestão dos serviços e atendimento a operação da empresa. O Kanban também é outra forma de trabalhar com operações na sua empresa.
  • Fim: fase final da aplicação, em que a empresa pode evoluir a aplicação com incrementos (adição de novas features) ou substituir a versão.

 

Disciplinas ALM

O uso de disciplinas permite endereçar as entradas e resultados esperados em cada etapa do ciclo de vida da aplicação.

alm-004
Arquitetura e Design
Diretrizes importantes para aplicação (e cumprimento) de práticas e processos entre os times de desenvolvimento. A Arquitetura deve ser disseminada e ter consistência no âmbito de construção da aplicação.

Gerenciamento de Requisitos
Manter a rastreabilidade dos requisitos (comportamento esperado da aplicação) ao longo do ALM. Documentar, priorizar, identificar dependência, conformidade são algumas das ações.

Gestão de Configuração de Software
O processo de construir a aplicação envolve diversos artefatos (código-fonte, documentos, etc.) que devem ter rastreabilidade, controle de acesso, versionamento, entre outros para garantir versões adequadas ao time.

Governança
Esta disciplina mantém a sinergia entre os projetos e processos da empresa, com métricas claras de retorno dos projetos, utilizando ferramentas integradas para gestão de Portfólio.

Implantação e Operações
Além das questões de infraestrutura (ambiente segregados, definição de procedimentos, etc.), a gestão operacional deve ter um controle dos atendimentos (incidentes, defeitos, solicitações, etc.) e monitoramento contínuo, prevendo erros e otimizando o custo de manutenção das empresas.

Testes e QA
Processo de testes para validações como o Teste Unitário (checa o resultado esperado mediante valores de entrada), Teste Integrado (entre módulos), Teste de Regressão (verifica a cada novo Build se não foram gerados Bugs) e métricas de qualidade para validar o processo de homologação junto ao usuário.

Gestão de Projetos
Uma boa gestão dos projetos visa a integração dos processos de desenvolvimento – tarefas, defeitos, mudanças RDMs, etc. – e a estratégia da empresa, apoiando a avaliação financeira e na criação de métricas que justifiquem a execução do Portfolio organizacional. Na prática a integração entre ferramentas de gestão e desenvolvimento como EPM e ALM.

Desenvolvimento
O time de desenvolvimento deve seguir um padrão de codificação com o apoio de arquiteto e líder técnico. O BDD, TDD e DDD são práticas que auxiliam o time técnico a construir e determinar boas práticas para as aplicações. Além de utilização de componentes e recursos de forma adequada.

 

Referências

– Microsoft Technet Library
– Microsoft MSDN
– Microsoft Technet Wiki
– Microsoft Technet Blogs
– Microsoft MSDN Blogs
– https://msdn.microsoft.com/pt-br/library/ee156630.aspx
– https://social.technet.microsoft.com/wiki/pt-br/contents/articles/22899.aspx