ti-enxame.com

Como posso rastrear atributos de qualidade no Kanban da minha equipe?

Minha equipe usa um sistema Kanban para rastrear o progresso do dia-a-dia e funcionou muito bem para entender o progresso nos recursos (capturados como histórias de usuário). Em grande parte permitimos que nosso design do sistema emergisse como desenvolvemos recursos que funcionaram bem até recentemente. Nas últimas duas semanas, tivemos várias discussões sobre trade-offs arquitetônicos especificamente relacionados a atributos de qualidade de desempenho e modificabilidade.

Acho que o que está acontecendo é como implementamos recursos e projetamos o sistema, estamos implicitamente tomando decisões sobre a arquitetura, mas não considerando essas decisões em termos de nossos requisitos de atributo de qualidade conhecidos. Seria realmente ótimo se eu pudesse rastrear/capturar/retratar visualmente como essas importantes decisões de design estão sendo feitas, então os membros da equipe têm uma melhor chance de não criar tensão adicional na arquitetura do sistema, pois ela está sendo implementada. E, claro, para complicar mais as coisas, as características em nossa prancha não são exclusivamente funcional e às vezes esconder a complexidade arquitetônica!

Como posso acompanhar o progresso em atributos de qualidade (ou outras decisões arquitetonicamente relevantes) visualmente no Kanban da minha equipe?

13
Michael

estamos implicitamente tomando decisões sobre a arquitetura, mas não considerando essas decisões em termos de nossos requisitos de atributo de qualidade conhecidos.

Eu acho que você pode visualizar isso criando um passo de "revisão arquitetônica" no seu fluxo de trabalho. O passo seria representado por uma coluna do Conselho de Kanbad com seu próprio limite de wip. O limite de WIP dependerá de quantos arquitetos/designers você tem que participar nessas revisões.

A equipe de desenvolvimento é responsável pelo fluxo horizontal, à esquerda para a direita de histórias de usuários. O arquiteto (s), na maioria dos casos, tocará as histórias somente quando estiverem na coluna Architectural/Technical Review. A intersecção da coluna com um swimglane horizontal visualiza a reunião do (s) desenvolvedor (es) e arquiteto (s).

Uma das equipes onde trabalho tem um passo semelhante em que eles fazem uma revisão do esquema do banco de dados com o arquiteto de dados principais. Eles não usam Kanban, mas se o fizeram, teriam muito provável que essa coluna no conselho deles.

Os atributos de qualidade conhecidos poderiam então ser representados como:

  • a definição de feita para o passo de revisão arquitetônica.
  • testes de aceitação em torno das histórias de usuário já feitas representando requisitos não funcionais. Em seguida, a definição de feita para uma nova história de usuário incluiria não quebrar esses testes.

[~ # ~] Adicionado [~ # ~] : A etapa de fluxo de trabalho "Architectural Review" pode ser suspeita de um problema chamado Tragédia dos comuns. Aqui está um ótimo post de blog Sobre como a visualização Kanban pode ajudar a lidar com isso e possíveis soluções.

7
azheglov

Existem realmente duas partes para esta questão. Uma parte é: como sabemos quando a arquitetura é alterada. A segunda parte é: Como sabemos que a arquitetura ainda é boa.

Para esta primeira parte: Como você sabe quando a arquitetura é alterada?

O objetivo aqui é tomar algo que está sendo feito implicitamente e torná-lo explícito

  • A sugestão de Alexei é uma opção única. Crie uma coluna na placa para revisão de arquitetura. Em seguida, mova um cartão lá se precisar de decisões arquitetônicas
  • Outra opção é criar uma política explícita sobre como lidar com isso: "Se precisarmos alterar a arquitetura, então devemos parentar com outra pessoa" é um exemplo de uma dessas políticas. Em um projeto, tivemos uma política que mudanças de código para determinados módulos especializados tiveram que ser feitos por parecer com pessoas específicas. Quando alguém queria alterar o código lá, eles ligariam para um par e se juntaram. O resto do trabalho foi feito solo. Você pode fazer algo semelhante com a arquitetura.

Você provavelmente iria com o primeiro, se muitas cartas necessitariam de revisão, ou se o arquiteto não é uma parte da equipe e uma folha é necessária, ou a revisão será detalhada o suficiente para levar algum tempo que você deseja rastrear o quadro. Este último é uma opção se apenas alguns cartões tocarem a arquitetura, e é fácil encontrar um par sob demanda.

Agora vindo para a segunda pergunta: Como sabemos que a arquitetura ainda é boa?

Eu sou um grande fã de visualização. Você poderia ter um gráfico no quadro branco com notas post-it descrevendo os componentes e arquitetura.

Há também analisadores estáticos que analisarão a base de código e geram uma imagem com gráfico de dependência de vários componentes. Você poderia executá-lo, tirar uma impressão e colocá-lo em uma parede uma vez por semana. Talvez as duas últimas impressões possam estar na parede, para que você possa ver se alguma coisa mudou na última semana.

O que eles permitem que você faça é tornar sua arquitetura e design visível. Os membros da equipe vão olhar para ele uma vez e comentar sobre isso se algo pudesse ser alterado ou refatorulado ou feito de uma maneira melhor.

6
Siddharta

Eu já vi esse problema também. Tomada de decisão implícita! Se a implicidade for o problema, o tornará explícito o possível resolver o problema? O que eu sugiro é ajustar o processo de arquitetura um pouco para 'começar a explicar' os pensamentos implícitos que progredir para se tornar decisões. O objetivo do passo adicional no processo é fazer com que os membros da equipe entendam que todos são propensos a tomar decisões arquitetônicas implícitas. Esta etapa apenas manterá a tomada implícita da pista.

Mantendo a "explicação de decisões implícitas" como parte do Kanban para cada um dos cenários poderiam ajudar.

O que vou sugerir pode ser incômodo. Mas se o processo for mapeado para um conjunto de itens do Kanban e, se isso for trazido na placa para cada cenário do arco, não o ajudará a rastreá-lo. Eu sugiro que você também pode mapeá-los para o modelo de seis partes do cenário e improvisar a placa Kanban para acomodar as descobertas, o QAS pode ser rastreado.

Vikram.

4
vikram

É um dos riscos de retardar decisões arquitetônicas sobre equipes ágeis. Obviamente, a coisa mais responsável por ser ágil é atrasar as decisões arquitetônicas até o último momento responsável. Mas as chances são do último momento responsável podem (ou deve) acontecer no início.

Uma coisa que ajuda é delinear claramente cedo em seus principais requisitos de condução; Coisas que você claramente sabe que você deve ter (mas não precisa necessariamente implementar agora.) Sua arquitetura em evolução (que tenta ser minimalista e flexível) deve acomodar suporte existente ou futuro para esses requisitos.

Mais importante, no entanto, sua arquitetura em evolução não deve implementar artefatos que obtêm (ou podem obter) no modo de apoiar esses requisitos de direção chave, mesmo que esses artefatos sejam destinados a resolver os requisitos atuais. Podemos nos referir a tais artefatos como artefatos interferentes, artefatos que entregam um valor real (como eles implementam uma solução para os requisitos existentes), mas cuja presença dificulta a implementação de um requisito de condução chave futuro.

Nos casos em que você deve implementar um artefato interferente, sua tarefa seria planejar sua remoção em algum momento (para que você possa implementar o requisito de condução chave que está sendo interferido.)

Obviamente, isso é todo esotérico sem um contexto real e tangível (como um projeto real). Mas mais ou menos o seu modelo de processo de desenvolvimento e sua arquitetura em evolução devem levar em conta essas considerações.

Os requisitos implícitos são as mortas das arquiteturas. Tudo deve ser explícito, ambos os principais requisitos de condução e aqueles que são auxiliares. Você não precisa implementar um requisito no início. Você só precisa ser capaz de contá-lo.

PS. Por requisito, quero dizer requisitos arquitetônicos no nível do sistema e não necessariamente os requisitos de nível de aplicação efêmero que podem ser acomodados sem alterações substanciais na arquitetura. Espero que ajude.

3
luis.espinal