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 envolve mais do que produzir código. Os programadores precisam de perceber claramente o que construir e porquê. Os responsáveis pelo produto e os gestores mantêm visibilidade sobre o trabalho que está a ser realizado e sobre a forma como este está a progredir. Ao estabelecer práticas consistentes, as equipas podem entregar software de qualidade, identificar 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 trabalhos para uma alteração solicitada, tenha em mente estas considerações:
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 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. Trabalhar em conjunto também leva a estimativas de esforço mais precisas, pois 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.
Retrospetiva. 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, verifique se as tarefas dos programadores estavam claramente definidas, as estimativas de tempo eram precisas e os processos estavam a funcionar como deveria.
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, é uma boa ideia 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 os teus próprios processos, usa processos comprovados como Agile, Scrum e quadros Kanban.
Usar abordagens comprovadas poupa tempo, reduz esforço e facilita a vida dos membros da equipa, porque a maioria deles 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.
Contrapartida: A metodologia ágil pode tornar-se demasiado rígida se for excessivamente 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 capturar unidades de trabalho distintas. Deve ser escrito a partir da perspetiva do utilizador e seguir estes princípios:
Independente. Para evitar trabalhos sobrepostos, uma história não deve depender da outra.
Negociável. O trabalho deve estar aberto à discussão e ao aperfeiçoamento, pois deve ser realista do ponto de vista do desenvolvimento e alinhado com os objetivos do negócio.
Valioso. O trabalho deve claramente beneficiar o utilizador.
Estimável. A equipa deve ser capaz de estimar o esforço com confiança para que seja possível entregar a funcionalidade a tempo. Prefira pequenos itens que possam ser concluídos em poucas semanas ou menos.
Testável. Deve haver 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 tracking apoia o controlo de qualidade, simplifica a depuração e ajuda as equipas 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 por testes.
Certifiquem-se de que todos concordam sobre o que "feito" significa para um ciclo de desenvolvimento. Os requisitos devem incluir código concluído, testes concluídos, documentação atualizada e acessibilidade abordada. Definições claras impedem que o trabalho inacabado se acumule.
Oportunidade de IA: Podes templastizar a redação de descrições de trabalho e critérios de aceitação com base nas políticas organizacionais. Use o Copilot para gerar rascunhos iniciais a partir dos modelos. A IA também pode impor normas ao validar documentos com base em modelos. Para cenários avançados, use agentes de IA baseados nos seus modelos 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 e melhorias identificados.
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 aceleram a integração dos programadores e reduzem defeitos causados por variações 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. Recomendamos que aplique normas em blocos de código que tratem de exceções e implementem 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 podem ser acedidas por todos os programadores e são atualizadas regularmente à medida que a base de código evolui. Por exemplo, pode usar EditorConfig no 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 desenvolvimento baseado em troncos, 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 request (PR) que especifiquem o tamanho aceitável do PR, formatos obrigatórios de título e descrição, e 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 de artefactos que podem ser templatizados. Certifique-se de que a documentação inclui 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, o que reduz o esforço gasto em trabalho rotineiro.
Ferramentas como o SonarQube e o Copilot Labs conseguem 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 porque as práticas de desenvolvimento são críticas para a correta implementação 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. 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.
Práticas de integração padronizadas são necessárias para validar o código contra 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: Aplique 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 dependências para componentes desatualizados ou vulneráveis e integrar a varredura de segurança, incluindo Teste Estático de Segurança de Aplicações (SAST), Teste Dinâmico de Segurança de Aplicações (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 usar fluxos de trabalho baseados em IA para automatizar tarefas de integração repetitivas, 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, mantenha a revisão humana 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.