Introdução
Estou trabalhando na Pancake House, programando o robô Foober de Fred para trabalhar na grelha lá. Durante minha coleta de requisitos para documentar as expectativas de Fred, obtive uma cópia do menu, observei o cozinheiro e conversei diretamente com Fred para aprender sua visão para Foober. Vou pegar o que aprendi com essas atividades e escrever um rascunho de um documento de requisitos. Fred deu a seus clientes uma pesquisa, que revisaremos ao mesmo tempo em que revisamos o documento de requisitos. Provavelmente farei alterações no documento de requisitos com base em minha conversa com Fred sobre isso (a revisão), nas respostas às pesquisas e nos comentários de Fred sobre o pankcake-fu de Foober.
Validação de Requisitos
A validação de requisitos é o que eu faço para ter certeza de que entendi o que meu cliente deseja que o programa que estou escrevendo faça. Para o projeto Pancake House, isso significa revisar meu documento de requisitos com Fred e analisar as pesquisas para ver quais mudanças devem ser feitas no menu.
Também escrevi um programa de protótipo usando meu robô, Foober, para testar e demonstrar uma pequena parte da fabricação de panquecas robóticas. Tudo isso faz parte do que deve ser uma conversa contínua com o cliente. À medida que avançamos no processo de validação desses requisitos, eles podem mudar, exigindo que algumas acomodações sejam feitas.
Revisão do documento de requisitos
Agora é hora de revisar meu documento de requisitos para ter certeza de que ele realmente representa o que Fred deseja. Este é o primeiro lugar para começar o processo de validação porque o documento detalha o que o cliente deseja. Se o documento de requisitos não corresponder às expectativas do cliente, o programa não estará certo.
Meu rascunho de documento de requisitos detalha como fazer do Foober um robô de grelha competente. Ele terá que:
- Saiba como fazer cada prato de panqueca do menu
- Saiba como preparar outros itens grelhados no menu, como ovos, salsichas ou bacon
- Saiba como preparar e enfeitar cada prato do menu
- Saiba como fazer pedidos na estação de coleta
- Saiba como ligar para o servidor apropriado para pegar um pedido
Anexei um menu para documentar os pratos de panqueca, placas e guarnições de pratos que Foober precisará saber. Finalmente, descrevi como fazer pedidos e ligar para o servidor apropriado. Foober não será programado para misturar massa de panqueca nem para fazer nenhum trabalho de preparação, como lavar e cortar frutas.
Fred está feliz com a maior parte do documento, mas quer algumas mudanças: ‘Eu gostaria que Foober pudesse fazer o trabalho de preparação, apenas no caso de o cara da preparação estar fora por algum motivo. E acho que ele também deve ser capaz de misturar massa para panquecas.
Discutimos isso um pouco para que eu possa ter uma ideia melhor dos detalhes. Isso incluirá não apenas lavar e fatiar frutas, mas também preparar outros ingredientes como gotas de chocolate, bacon pré-cozido e os itens para diferentes pratos de panqueca.
Depois de pensar sobre isso, digo a Fred: ‘Posso programar Foober para fazer o trabalho de preparação, mas vai demorar mais do que os três meses que você me deu e, claro, vai custar mais. Aqui está uma sugestão – deixe-me programar o Foober como discutimos. Posso fazer isso nos três meses originais, pelo preço cotado. Já que a preparação da comida não é a maior prioridade para você, por que não revisitamos isso depois que Foober estiver fazendo, banhando, guarnecendo e estabelecendo os pedidos? ‘
Fred pensou um pouco e concordou que o trabalho de preparação não era a prioridade agora, então poderia esperar. Isso é bastante típico de tal reunião. Quanto mais cedo pudermos divulgar esses tipos de solicitações, mais fácil (e mais barato) será atendê-las.
Como a cozinheira de Fred se aposentará em três meses, o objetivo mais importante é substituí-la por Foober. O trabalho de preparação já é feito por outra pessoa, então não é tão importante quanto o trabalho da grelha. Além disso, o orçamento de Fred não aloca fundos para programação extra no momento. (E eu não vou trabalhar apenas por panquecas!)
Avaliação da pesquisa
A próxima coisa a fazer foi examinar as pesquisas. A revisão da pesquisa nos permite examinar possíveis mudanças no negócio, que podem (ou não) afetar o projeto de programação.
Encontramos sugestões de decoração e horário de funcionamento, o que não afetou meu trabalho. Também encontramos sugestões de menu, o que afetou meu trabalho. Fred me disse: ‘Parece que as panquecas de chucrute e cebola não são um grande sucesso. Vamos retirá-los do menu. ‘ (Por que não fiquei surpreso?)
Fred também recebeu alguns pedidos interessantes de novos sabores. Uma sugestão foram as Panquecas Banana Split – panquecas com rodelas de banana, morangos e gotas de chocolate com chantilly, acompanhadas de caldas. Outra foi Panquecas de Manteiga de Amendoim e Banana com chantilly e talvez um pouco de calda de chocolate! Fred achou que eles poderiam ser algo para tentar. Eu disse a ele para criar receitas e adicioná-las à programação de Foober.
Até agora, em nossa revisão e validação, adicionamos uma possível segunda fase do projeto para ensinar o trabalho de preparação de Foober, em vez de estender o projeto além da data em que o novo cozinheiro era necessário. As pesquisas não tiveram muito efeito sobre o que eu precisava programar, além de tirar uma receita do menu e adicionar duas novas.
Prototipagem
Com o passar dos anos, descobri que mesmo requisitos escritos, revisados várias vezes, ainda podem ter falhas e mal-entendidos. Às vezes, eles são o resultado de suposições implícitas. Às vezes, eles resultam de um mal-entendido sobre o significado de um termo.
Uma das melhores maneiras que encontrei de sair desse tipo de armadilha é construir um protótipo simples para demonstrar o que eu entendo que sejam os requisitos. O protótipo pretende ser um modelo simples do que o programa real fará. Uma vez que o protótipo é construído, eu consigo o máximo de usuários possível para entrar e, como dizemos no negócio, ver como funciona e nos dar feedback. Esse é o objetivo da prototipagem – demonstrar os principais elementos do que um programa deve fazer para obter feedback do usuário.
Enquanto Fred examinava o documento de requisitos e as pesquisas, fiz alguns trabalhos preliminares em casa com Foober. Eu o programei o suficiente para ser capaz de fazer panquecas simples e colocá-las em um prato. Minha ideia de fazer aquela parte do programa primeiro foi simples – se Foober não conseguia fazer panquecas simples e colocá-las no prato, ele não poderia fazer as mais complicadas, muito menos enfeitar e prepará-las para coleta.
Para o meu protótipo, Foober não iria decorar ou partir para a coleta. Ele ia apenas fazer panquecas simples e colocá-las em um prato. Meu código era totalmente rápido e sujo, e eu fiz muitas falsificações. Por exemplo, como essas panquecas eram simples, não precisei codificar Foober para adicionar pedaços extras como gotas de chocolate ou mirtilos. Isso significava que eu não precisava fazer Foober falar com um banco de dados de receitas, o que teria levado muito mais tempo e estava fora do escopo do meu protótipo. Eu precisava demonstrar as habilidades de fazer panquecas de Foober e nada mais.
Depois de terminar o código, executei Foober em seus passos. Fiquei feliz com as panquecas que ele fez, então disse a Fred que Foober estava pronto para demonstrar seu domínio de panqueca-fu! Fred nos convidou para ir à Pancake House uma tarde, quando as coisas estavam lentas. Poderia ter sido melhor …
Quando chegamos lá, Fred tinha parte da cozinha preparada para a demonstração, a massa da panqueca pronta e alguns pratos para que Foober pudesse colocar panquecas neles. Foober foi até a grelha, pegou a espátula e o jarro de massa e … parou.
«Foober», eu disse, «é hora de fazer panquecas.»
Nada.
– Foober, mostre ao Fred como você faz panquecas!
Fecho eclair.
‘Foober, você vai fazer panquecas ou não ?!’
‘Não posso, chefe!’ ele respondeu.
‘Por que não?’
‘Griddle está muito frio, e eu não consigo colocá-lo alto o suficiente!’
‘Diga o quê?’
‘A grelha está configurada para 260 graus. Precisa estar a 500 graus e só vai até 300 graus! ‘
Olhei para Fred, que começou a rir. «Todo o equipamento da minha cozinha é europeu, o que significa que todos os controles estão em graus Celsius, não Fahrenheit.»
‘Oh,’ eu disse. Liguei meu laptop no Foober e alterei a temperatura necessária para 260 graus. Como Foober não se importava com a diferença entre Celsius e Fahrenheit, tudo o que ele precisava saber agora era para que servia a churrasqueira. Feito isso, ele começou a fazer algumas panquecas, uma de cada vez.
Fred tinha uma expressão preocupada no rosto. – É a única maneira de ele fazer – uma panqueca de cada vez? ele perguntou.
‘Bem’, eu disse, ‘neste momento, eu só quero que ele faça panquecas decentes. Quando eu começar a programar o cardápio nele, ele saberá quantas panquecas são necessárias para cada prato e lidará com quantos pratos você tiver assentos para os clientes, tudo de uma vez. ‘
‘O que acontece quando somos atingidos por uma casa cheia e pedidos de comida para viagem? O que ele fará então? ‘
Olhei Fred nos olhos e disse: ‘O que você quer que ele faça?’
Após as avaliações
Então, eu trouxe Foober para a Pancake House para cozinhar algumas panquecas e descobri que, como a NASA, eu tinha um problema de ‘unidades de medida’, que causou alguma confusão em Foober até que eu ajustei seu programa. Fred também expressou preocupação quando Foober começou a fazer uma panqueca por vez, o que me levou a descobrir que eu precisava aumentar o número de pratos que Foober precisava para conseguir dar conta de uma casa cheia e pedidos de entrega!
O resultado das reuniões e demonstração foi que eu voltaria e atualizaria o documento de requisitos para refletir o que Fred e eu tínhamos aprendido. Também atualizarei a programação do protótipo para demonstrar o gerenciamento de vários pedidos de Foober.
Resumo da lição
Então, para resumir: a coleta e validação de requisitos deve ser uma conversa contínua entre você e seu cliente. Você trabalhará com seu cliente para validar o que você entende que são os requisitos dele. Essa conversa provavelmente levará várias voltas ao longo do ciclo, atualizando e alterando seu documento de requisitos.
As ferramentas que você usará para obter essa validação são:
- Revisão do documento de requisitos para verificar se seu documento de requisitos descreve com precisão o que o cliente deseja que o programa faça. Em nosso caso, Fred decidiu que queria que Foober fizesse o trabalho de preparação, além de cozinhar.
- Revisão de pesquisas para analisar os resultados das pesquisas dadas ao seu cliente e / ou seus clientes. Essas pesquisas não se limitam necessariamente a tópicos sobre seu programa. Eles podem incluir outras questões relacionadas aos negócios que não afetarão diretamente seu código. A pesquisa de Fred encontrou alguns novos itens de menu possíveis, mas também tinha outros dados sobre horários e decoração. Terei que programar os novos itens do cardápio, mas não terei que me preocupar com o horário de funcionamento da loja ou decorar o local.
- A prototipagem é de longe minha ferramenta favorita porque posso colocar uma amostra do programa nas mãos do cliente e gerar um feedback muito mais valioso do que uma revisão de documento. Meu protótipo com Foober fez exatamente isso!
E, agora que parece que definimos os principais requisitos, preciso começar a fazer uma análise séria.
Resultado de aprendizagem
Depois de assistir a esta lição, você será capaz de explicar como usar uma série de ferramentas de validação, incluindo revisão de documento de requisitos, revisão de pesquisa, requisitos de usuário e prototipagem.