Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a esta recomendação de lista de verificação de Excelência Operacional do Azure Well-Architected Framework:
| OE:03 | Formalize os processos ao longo de todo o ciclo de vida do desenvolvimento de software, desde a ideação até à entrega, e torne-os transparentes para a equipa e as partes interessadas. |
|---|
O desenvolvimento de software é mais do que apenas produzir código. Os programadores precisam de compreender claramente o que construir e porquê, enquanto os proprietários de produto e gestores mantêm a visibilidade sobre o trabalho que está a ser feito e como ele está a progredir. Ao estabelecer práticas consistentes, as equipas podem entregar com qualidade, identificar os riscos cedo, gerir expectativas e acompanhar o progresso.
Este guia fornece recomendações sobre como conduzir o desenvolvimento de software de forma estruturada, previsível e colaborativa.
Estabelecer padrões para gerir mudanças
No desenvolvimento de software, cada unidade de trabalho é uma mudança. Mesmo novas funcionalidades representam uma mudança de um estado inexistente para um implementado.
Ao iniciar o trabalho para uma alteração solicitada, siga estes aspetos:
Colabora. As equipas devem trabalhar em conjunto e não isoladamente. A maioria das mudanças afeta mais do que um componente ou função. Envolva os programadores, testadores, operações e partes interessadas do produto desde cedo para garantir que detalhes importantes não são esquecidos e que todos compreendem o impacto na sua área. Também conduz a estimativas de esforço mais precisas, uma vez que pessoas com experiência relevante podem contribuir com a sua perspetiva.
Mantenha os objetivos da colaboração simples. Concorde com o âmbito de uma alteração, identifique dependências e divida o trabalho em tarefas claras e geríveis, documentando-as num backlog.
Comunica. Padronizar a forma como a equipa comunica os comunicados, tanto interna como externamente. Defina que informação deve ser partilhada com públicos externos (como clientes), o nível de detalhe adequado, a documentação necessária de integração ou suporte e o cronograma de comunicação. Por exemplo, notifique as partes interessadas duas semanas antes do lançamento e envie um lembrete 24 horas antes da implementação.
Retrospectiva. Revise regularmente cada ciclo de desenvolvimento para identificar o que funcionou, o que não funcionou e o que pode ser melhorado. Mantenha estas avaliações isentas de culpa e focadas na aprendizagem.
Aproveite esta oportunidade para verificar se as práticas padrão são eficazes. Por exemplo, se as tarefas do programador estavam claramente definidas, se as estimativas de tempo eram precisas e se os processos estavam a funcionar como previsto.
Relatórios. Padronizar relatórios sobre como o produto está a mudar. Mantenha os relatórios focados no crescimento do produto em vez da produtividade individual dos programadores. Por exemplo, é bom que as partes interessadas acompanhem:
- Crescimento da adoção
- Melhorias de desempenho
- Tempo de integração
- Frequência de incidentes
Escolha ferramentas comprovadas na indústria
Em vez de inventares o teu próprio processo, usa tabuleiros comprovados como Agile, Scrum e Kanban.
Usar abordagens comprovadas poupa tempo, reduz esforço e facilita a vida dos membros da equipa, pois a maioria já deve estar familiarizada com estas ferramentas. As ferramentas padrão também simplificam a integração de novos colaboradores e melhoram a colaboração entre equipas.
Compensação: A metodologia ágil pode ficar muito rígida se for demasiado prescritiva. Procurar um equilíbrio entre padrões bem definidos e inovação.
Padronizar a forma como o trabalho de desenvolvimento é registado
Padronize um modelo para captar unidades de trabalho discretas. Deve ser escrito a partir da perspetiva do utilizador e deve seguir estes princípios:
- Independente. Uma história não deve depender de outra para evitar trabalhos sobrepostos.
- Negociável. Aberto à discussão e ao aperfeiçoamento porque o trabalho deve ser realista do ponto de vista do desenvolvimento e alinhado com os objetivos do negócio.
- Valioso. Deve claramente beneficiar a experiência do utilizador.
- Estimável. A equipa pode estimar o esforço com confiança para que a funcionalidade seja entregue a tempo. Prefira pequenos itens que possam ser concluídos em poucas semanas ou menos.
- Testável. Há uma forma clara de verificar a funcionalidade e a implementação da funcionalidade.
Observação
Todos os ativos de desenvolvimento em produção devem ser rastreáveis até ao código, testes, critérios de aceitação e itens do backlog. O rastreamento apoia o controlo de qualidade, simplifica a depuração e ajuda a cumprir os requisitos de conformidade em ambientes regulados.
Além disso, padronize um modelo de critérios de aceitação para que a equipa e as partes interessadas saibam que o trabalho está concluído. Cada unidade de trabalho deve ser um critério de aceitação que não seja ambíguo e possa ser verificado através de testes.
Certifiquem-se de que todos concordam sobre o que "feito" significa para um ciclo de desenvolvimento. Isto deve incluir código concluído, testes concluídos, documentação atualizada e abordagens sobre acessibilidade. Definições claras impedem que trabalhos inacabados se acumulem.
Oportunidade em IA: A redação de descrições de trabalho e critérios de aceitação pode ser padronizada com base nas políticas organizacionais. Usa o Copilot para gerar rascunhos iniciais a partir desses templates. A IA também pode impor normas ao validar documentos com base nesses modelos. Para cenários avançados, use agentes de IA baseados nos seus templates padrão para consumir resultados de revisões de código e análises de causa raiz, e depois crie automaticamente itens de trabalho compatíveis para defeitos identificados e melhorias.
Padronizar práticas de codificação
As práticas de programação definem as convenções e diretrizes que os programadores seguem ao escrever e colaborar em código. Estas práticas estabelecem como o código é estruturado, documentado e revisto dentro e entre equipas. Também ajuda a acelerar a integração dos programadores e a reduzir defeitos causados pela variação na implementação.
Ambiente de desenvolvimento e ferramentas. Padronizar configurações de IDE, ferramentas de desenvolvimento e ferramentas aprovadas de geração de código entre as equipas. Impor o uso de bibliotecas comuns, frameworks e normas de gestão de pacotes para promover a reutilização, garantir consistência e cumprir os requisitos de segurança organizacionais.
Convenções de programação. Defina e documente normas de codificação que abrangam convenções de nomenclatura, estrutura do código e formatação. Recomenda-se que aplique padrões em blocos de código que tratem exceções e façam instrumentação. Convenções claras tornam o código mais fácil de ler, compreender e manter, e ajudam as equipas a trabalhar de forma consistente entre funcionalidades e componentes. Certifique-se de que estas diretrizes são acessíveis a todos os programadores e são atualizadas regularmente à medida que a base de código evolui. Por exemplo, podes usar o EditorConfig no ambiente Visual Studio para impor estilos de programação.
Repositório de código. Estabelecer e aplicar estratégias de ramificação padronizadas, como Gitflow, GitHub Flow ou Trunk-Based Development em todos os repositórios, para garantir práticas consistentes de integração e lançamento de código.
Avaliações por pares. Defina padrões de pull requests que especifiquem o tamanho aceitável do pull request, os formatos obrigatórios de título e descrição, e os requisitos obrigatórios de revisão. Exigir revisões por pares para cada alteração de código para garantir que os padrões são cumpridos. Defina um modelo de colaboração para revisões de RP que defina expectativas quanto a responsabilidades, feedback e aprovações.
Modelos para artefactos comuns. Descrições PR, mensagens de commit e testes unitários são exemplos clássicos que podem ser templatizados. Certifique-se de que a documentação inclui o propósito, contexto e passos de teste.
Cobertura de testes. Exigir testes unitários para todo o código novo e modificações significativas ao código existente. Os testes devem seguir padrões acordados e incluir afirmações significativas para verificar a funcionalidade.
Oportunidade de IA: As ferramentas de IA podem automatizar tarefas repetitivas e manuais nos processos de codificação e revisão. O GitHub Copilot pode gerar blocos de código padronizados, testes unitários e descrições de pull requests, reduzindo o esforço gasto em trabalho rotineiro.
Ferramentas como o SonarQube ou o Copilot Labs podem identificar automaticamente desvios em relação aos padrões de codificação, falta de cobertura de testes e anti-padrões comuns. Transferir estas tarefas repetitivas de validação para a IA liberta as equipas para se focarem em trabalhos de maior valor. No entanto, a revisão humana continua a ser essencial, pois as práticas de desenvolvimento são críticas para a implementação correta da lógica de negócio e da qualidade global da carga de trabalho.
Padronizar práticas de integração
Integração refere-se aos processos e convenções automatizados usados para validar, proteger e empacotar código à medida que este avança ao longo do ciclo de vida do desenvolvimento. Isto inclui como as alterações de código são construídas, testadas, digitalizadas e preparadas para implementação como parte de pipelines de integração contínua.
A padronização das práticas de integração é necessária para validar o código face a requisitos definidos de qualidade e segurança e também para permitir ciclos de feedback mais rápidos para os programadores.
- Automação de builds e testes integrados: Padronizar compilações automatizadas que correm em cada envio de código e aplicar testes unitários e de integração automatizados com limiares de cobertura definidos, quando aplicável.
- Análise da qualidade do código: Aplicar análise estática de código e portas de qualidade utilizando ferramentas aprovadas para garantir que o código cumpre os padrões de qualidade definidos antes da promoção.
- Gestão de dependências: Varrer continuamente as dependências para componentes desatualizados ou vulneráveis e integrar a varredura de segurança, incluindo SAST, DAST e deteção de segredos.
- Gestão de artefactos: Padronizar as políticas de versionamento, armazenamento e retenção de pacotes e artefactos para garantir rastreabilidade e reprodutibilidade.
- Monitorização e reporte: Recolha e monitorize métricas de construção e pipeline para acompanhar a qualidade, desempenho e conformidade.
Oportunidade de IA: Considere fluxos de trabalho baseados em IA para automatizar tarefas repetitivas de integração, como gerar configurações de pipelines CI/CD, criar andaimes de teste e detetar problemas de construção ou de teste, como testes em falta ou problemas de dependência. Embora a IA acelere a configuração do pipeline, assegure que a revisão humana é mantida para validar decisões críticas.
Facilitação do Azure
Os Painéis do Azure são um serviço baseado na Web que permite que as equipas planeiem, acompanhem e discutam o trabalho em todo o processo de desenvolvimento. É adequado para práticas de desenvolvimento baseadas em Agile.
O GitHub Projects é uma ferramenta de gerenciamento de projetos personalizável que pode organizar projetos e integra-se usando problemas e solicitações pull no GitHub.
Ligações relacionadas
Ligações da comunidade
Lista de verificação de Excelência Operacional
Consulte o conjunto completo de recomendações.