“Um robô jogando xadrez enquanto lê um livro de regras, arte digital”
criado por IA usando DALL-E
Pedi ao meu mais novo assistente, o Chat GPT, que descrevesse alguns requisitos e algumas regras para um aplicativo. A resposta foi muito boa e adequada. Melhor do que grande parte das Especificações de Requisitos que vejo.
Muitos profissionais fazem uma confusão enorme na hora de diferenciar Requisitos e Regras neste contexto de desenvolvimento de software. O exemplo gerado pelo Chat GPT que vou compartilhar aqui para ajudá-los a deixar essa diferença mais clara.
Mas antes, vamos entender cada um desses conceitos.
Requisitos e Regras
Requisitos e regras de negócio são conceitos relacionados, mas distintos.
“Requisito é uma representação útil de uma necessidade.”
(Guia BABOK v3)
Requisitos podem ser descritos sob diferentes perspectivas. Se a necessidade for da organização como um todo, o chamamos de requisito de negócio. Se a necessidade for de uma classe de pessoas, o chamamos de requisito de stakeholder. Se a necessidade for de uma aplicação de software, hardware ou sistema de tecnologia da informação que está sendo analisado, o nome é requisito da solução.
Vamos focar neste último para o nosso aplicativo exemplo. Um requisito da solução normalmente descreve uma funcionalidade, desempenho ou característica específica que deve ser fornecida pela solução para atender os requisitos de stakeholder e de negócio.
“Regra de negócio é uma diretiva específica, aplicável e testável que está sob o controle do negócio e que serve como critério para orientar o comportamento e dar base para os julgamentos ou a tomada de decisão.”
(Guia BABOK v3)
As regras de negócio são geralmente orientadas para o negócio e são derivadas de políticas, leis, regulamentos, práticas de mercado, cláusulas contratuais ou outras restrições que afetam a operação ou a tomada de decisões de negócios da organização.
As regras de negócio podem influenciar a maneira como os requisitos da solução são implementados, ou podem afetar a forma como os usuários de um sistema trabalham, mas normalmente independem da solução. Isso quer dizer que, mesmo que não exista um aplicativo que automatize o processo de negócio, as regras precisam ser seguidas. Por isso, são descritas de forma independente da sua implementação.
Casos de uso identificados pelo chat GPT
Para gerar um exemplo simples e claro, eu sugeri um aplicativo de um jogo de xadrez. Jogos têm processos simples e sua complexidade normalmente está nas regras que precisam ser definidas com muita clareza.
Eu iniciei o exercício com o Chat GPT pelos requisitos funcionais do aplicativo. Gosto muito da técnica de casos de uso para mapear requisitos deste tipo. Cada caso de uso é uma unidade coerente de funcionalidade composta de uma sequência de interações em que o usuário acessa o sistema para concluir um objetivo.
Fabrício: Eu quero criar um aplicativo que funcione como um jogo de xadrez onde o usuário joga contra um jogador virtual. Me ajude a especificar os requisitos para este aplicativo. Quais casos de uso devo implementar?
Assistente Chat GPT: Para criar um aplicativo de jogo de xadrez, existem vários requisitos que precisam ser considerados. Aqui estão alguns casos de uso que você pode considerar:
- Criação de conta: permitir que o usuário crie uma conta para salvar o progresso do jogo, acessar recursos extras e desafiar outros jogadores online.
- Jogar contra um jogador virtual: permitir que o usuário jogue contra um jogador virtual, que deve ser capaz de fazer jogadas válidas e implementar estratégias de xadrez.
- Jogar contra outro jogador online: permitir que o usuário desafie outro jogador online em uma partida de xadrez.
- Configurações do jogo: permitir que o usuário escolha as configurações do jogo, como nível de dificuldade, tempo por jogada e cor de suas peças.
- Regras do jogo: fornecer as regras do xadrez e como o jogo é jogado.
- Opções de ajuda: permitir que o usuário peça sugestões e dicas para o próximo movimento.
- Histórico de jogadas: permitir que o usuário visualize o histórico das jogadas do jogo atual.
- Salvar/Carregar jogo: permitir que o usuário salve o jogo atual e carregue um jogo anteriormente salvo.
- Modo offline: permitir que o usuário jogue o jogo offline contra o computador.
- Estatísticas do jogo: fornecer estatísticas sobre as partidas jogadas pelo usuário, como vitórias, derrotas e empates.
Esses são apenas alguns dos casos de uso que você pode implementar para criar um aplicativo de jogo de xadrez. Você pode adicionar recursos adicionais, como desafiar um amigo, visualização 3D do tabuleiro, bate-papo online e muito mais.
Como você pode ver, o chat GPT é bem “criativo” e já me estimula com várias ideias que podem ser melhor exploradas. Meu interesse está no jogo em si, porque é onde as regras precisam estar claramente definidas.
Caso de uso descrito pelo chat GPT
Como já disse, o processo de um jogo é relativamente simples. A complexidade está nas regras. Para ver como funciona o jogo e qual é o passo a passo do processo, pedi ao chat GPT para descrever o caso de uso onde um usuário joga contra o computador.
Fabrício: O caso de uso 2 me parece mais simples. Descreva-o num template padrão de casos de uso.
Assistente Chat GPT: Claro, aqui está a descrição do caso de uso 2, “Jogar contra um jogador virtual”, em um template padrão de casos de uso:
Nome do Caso de Uso: Jogar contra um jogador virtual
Ator Principal: Usuário
Resumo: O usuário joga uma partida de xadrez contra um jogador virtual.
Pré-condições: O aplicativo de xadrez está aberto e o usuário selecionou “Jogar contra um jogador virtual”.
Pós-condições: A partida de xadrez contra o jogador virtual é concluída.
Fluxo Básico:
- O usuário seleciona “Jogar contra um jogador virtual” no aplicativo de xadrez.
- O aplicativo inicia uma nova partida de xadrez com um jogador virtual.
- O usuário faz sua jogada e o jogador virtual responde com uma jogada válida.
- O aplicativo verifica se a jogada do usuário é válida e atualiza o tabuleiro.
- O processo continua até que o jogo seja concluído.
- Quando o jogo é concluído, o aplicativo exibe o resultado da partida.
Fluxos Alternativos:
1a. O usuário encerra a partida antes que ela seja concluída.
- O aplicativo encerra a partida e exibe uma mensagem informando que a partida foi cancelada.
2a. O usuário faz uma jogada inválida.
- O aplicativo exibe uma mensagem informando que a jogada é inválida e solicita que o usuário faça uma jogada válida.
Requisitos Especiais:
- O jogador virtual deve ser capaz de fazer jogadas válidas e implementar estratégias de xadrez.
- O aplicativo deve verificar se as jogadas são válidas antes de atualizar o tabuleiro.
- O aplicativo deve registrar os movimentos da partida para exibição posterior.
- O aplicativo deve permitir que o usuário possa salvar ou carregar uma partida em andamento.
Regras definidas pelo Chat GPT
Finalmente, chegamos ao exemplo das regras. As regras não fazem parte dos requisitos e por isso não são descritas no Caso de Uso, mas em uma documentação à parte.
No passo 4 do fluxo básico está descrito que “O aplicativo verifica se a jogada do usuário é válida”. Essa verificação só será possível se as regras estiverem claramente definidas. Foi isso que pedi ao chat GPT.
Fabrício: Liste todas as regras de negócio para determinar se uma jogada é válida.
Assistente Chat GPT: Claro, aqui estão todas as regras de negócio necessárias para determinar se uma jogada é válida no jogo de xadrez:
- Cada peça tem um movimento específico que pode ser feito, de acordo com suas regras de movimentação.
- Uma peça não pode ser movida para uma casa já ocupada por outra peça do mesmo jogador.
- Uma peça só pode capturar uma peça adversária se ela estiver movendo-se de acordo com suas regras de movimentação e a peça adversária estiver localizada em uma casa que seja um destino válido.
- O peão pode avançar uma ou duas casas em sua jogada inicial e somente uma casa em jogadas subsequentes.
- O peão pode capturar uma peça adversária diagonalmente à sua frente.
- A torre pode se mover horizontal ou verticalmente em qualquer número de casas, desde que não haja outras peças no caminho.
- O bispo pode se mover em diagonal em qualquer número de casas, desde que não haja outras peças no caminho.
- A dama pode se mover tanto horizontal quanto verticalmente e também em diagonal em qualquer número de casas, desde que não haja outras peças no caminho.
- O rei pode se mover para qualquer casa adjacente, mas não pode se mover para uma casa que esteja sob ataque de uma peça adversária.
- O rei é colocado em xeque quando está sob ataque de uma peça adversária.
- Um jogador não pode fazer uma jogada que coloque seu próprio rei em xeque.
- O jogo termina quando um jogador coloca o rei adversário em xeque-mate, o que significa que o rei está em xeque e não há jogadas legais disponíveis para escapar do xeque.
- O jogo pode terminar empatado se ambos os jogadores concordarem com o empate, se houver uma posição de tabuleiro com repetição de movimentos, ou se nenhum jogador conseguir colocar o rei adversário em xeque-mate.
- O roque é um movimento especial que pode ser feito pelo rei e uma das torres, desde que o rei não esteja em xeque, não tenha se movido antes e não passe por casas que estejam sob ataque de uma peça adversária.
- Um peão que chegar à última fileira do tabuleiro pode ser promovido a uma peça de sua escolha (exceto um rei ou outro peão).
Veja que as regras não mencionam o aplicativo. As regras do xadrez dizem respeito às peças, ao jogo, ao que pode, ao que não pode, a como as peças se movimentam e capturam as peças do adversário. As regras existem e devem ser respeitadas por quem quiser jogar xadrez, independentemente da existência ou não do meu aplicativo que automatiza o jogo.
Eu terei que implementar esse requisito de verificar se uma jogada é válida checando todas essas regras de negócio antes de atualizar o tabuleiro. Se uma jogada violar qualquer uma dessas regras, o aplicativo deve informar ao jogador que a jogada não é permitida e solicitar que o jogador faça uma jogada diferente, conforme definido no fluxo alternativo 2a. Se uma jogada for válida, o aplicativo deve atualizar o tabuleiro e continuar o jogo no passo 5 do fluxo básico.
Regras de negócios corporativos
O exemplo do jogo de xadrez é didático, mas você pode se perguntar que tipos de situações demandam a especificação de regras de negócio para o seu negócio. Veja alguns exemplos sugeridos aqui pelo Chat GPT:
Fabrício: Liste alguns exemplos de requisitos de sistemas que automatizam atividades de processos corporativos que exigem a definição de regras de negócios.
Assistente Chat GPT: Existem muitos exemplos de requisitos de sistemas que exigem a definição de regras de negócios para automatizar atividades de processos corporativos. Aqui estão alguns exemplos:
- Um sistema de gerenciamento de pedidos de vendas que deve aplicar as políticas de preços e descontos da empresa para calcular o valor final do pedido.
- Um sistema de gerenciamento de estoque que deve aplicar as regras de controle de inventário da empresa para gerenciar as quantidades de estoque e garantir que não haja excesso ou escassez de produtos.
- Um sistema de gerenciamento de despesas que deve aplicar as políticas de reembolso da empresa para validar e aprovar as despesas submetidas pelos funcionários.
- Um sistema de gerenciamento de conformidade que deve aplicar as regulamentações e políticas internas da empresa para monitorar e garantir o cumprimento dos requisitos legais e regulatórios.
- Um sistema de gerenciamento de riscos que deve aplicar as políticas de gerenciamento de riscos da empresa para identificar, avaliar e gerenciar os riscos associados às operações da empresa.
- Um sistema de gerenciamento de contratos que deve aplicar as cláusulas e condições dos contratos para garantir que as obrigações contratuais sejam cumpridas e monitorar o desempenho dos fornecedores e clientes.
- Um sistema de gerenciamento de recursos humanos que deve aplicar as políticas de recursos humanos da empresa para gerenciar a folha de pagamento, benefícios, férias e outros aspectos relacionados aos funcionários.
Esses são apenas alguns exemplos, mas a lista pode ser muito maior, dependendo do tipo de empresa e dos processos que estão sendo automatizados.
Conclusão
Regras e requisitos são informações de tipos diferentes e devem ser descritas, armazenadas e gerenciadas de forma diferente. Se você não entendia bem essa diferença, espero que este exemplo tenha ajudado a esclarecer.
Procure identificar quem são os gestores das regras na sua organização. Se não estão definidos, é importante fazê-lo. Organizações sem regras de negócio claramente definidas não têm comportamento padrão. E é impossível automatizar algo que não foi padronizado.
Seus requisitos podem estar completamente definidos, mas sem regras estabelecidas, você nunca será capaz de implementar uma solução que funcione.
Veja também Diferença entre requisitos e regras de negócio com Gladys Lam.
Este artigo também fez uso do Chat GPT para auxiliar na criação dos exemplos aqui apresentados. Essa ferramenta tem trazido boas oportunidades para aumentar a produtividade e qualidade do trabalho realizado por analistas de negócios.
Veja abaixo outros artigos que também falam sobre este uso do Chat GPT:
- A Inteligência Artificial vai tomar o meu lugar?
- Entrevista com Chat GPT
- Chat GPT como ferramenta para análise de negócios
Desenvolva a técnica de Especificação de Regras de Negócios em um dos cursos in-company da Gigante Consultoria.
Referências
- Chat GPT: “Este artigo foi produzido com o uso do chat GPT, um modelo de linguagem treinado pela OpenAI.” https://openai.com/blog/gpt-3-apps/
- Dall-e: “A imagem usada neste artigo foi gerada com o uso da ferramenta de geração de imagem Dall-e, desenvolvida pela OpenAI.” https://dall-e.openai.com/
- O Guia BABOK para o Corpo de Conhecimento da Análise de Negócios citado no artigo foi desenvolvido pelo IIBA, o Instituto Internacional de Análise de Negócios.
https://iiba.org.