Página principal do livro

Compre na Amazon ou Casas Bahia

Veja também os cursos de extensão a distância Engenharia de Software Moderna (48 horas) e Teste de Software (20 horas), oferecidos pelo DCC/UFMG. Matrículas abertas para as turmas do segundo semestre de 2023.

Engenharia de Software Moderna

Marco Tulio Valente

Perguntas Frequentes sobre Requisitos

O objetivo deste artigo é responder perguntas sobre temas relacionados com requisitos de software, isto é, sobre o Capítulo 3 do livro.

Segue a lista atual de perguntas:

  1. O que são personas?
  2. O que significa Ideal Customer Profile (ICP)?
  3. O que é dogfooding?
  4. Como podemos classificar uma manutenção realizada para melhorar o desempenho de um sistema em tempo de execução?
  5. Como escrever histórias que valem para dois ou mais papéis de usuários (user roles)?

1. O que são personas?

No contexto de Engenharia de Software, persona é uma técnica usada para aproximar os desenvolvedores de um sistema de seus usuários finais. Suponha o sistema de bibliotecas que usamos no Capítulo 3 do livro. Nele, assumimos três papéis de usuários: usuário típico, professor e funcionário. A técnica de personas propõe representar esses papéis de uma forma mais humana por meio de nomes e de uma breve descrição. Por exemplo, podemos criar a seguinte persona:

Mariana: Estudante do segundo ano de Sistemas de Informação, 20 anos, cursa normalmente cinco disciplinas em cada semestre. Usa a biblioteca para estudar e para acessar os principais livros dessas disciplinas. Durante as férias, gosta de realizar empréstimos de livros de literatura.

Uma persona é um usuário fictício e hipotético. Ou seja, no sistema de bibliotecas não existe necessariamente um usuário chamado Mariana. A descrição de uma persona é também acompanhada de uma foto. Normalmente, define-se um número pequeno de personas para um sistema. Por exemplo, menos de cinco ou seis personas. E então as histórias de usuários são pensadas e escritas para cada uma das personas definidas.

Como dissemos, o principal objetivo da técnica de personas é criar uma relação empática entre os desenvolvedores de um sistema e os seus usuários. Com isso, pretende-se evitar que os desenvolvedores projetem o sistema pensando neles mesmos, isto é, apenas com as características que eles julgam importantes, caso tivessem que usar o sistema.

Para definição das personas podem ser realizadas pesquisas com os potenciais usuários do sistema, por exemplo, por meio de questionários. Além de perguntas tradicionais (nome, sexo, idade, etc.) é importante que esses questionários revelem também os hábitos e comportamentos dos usuários, principalmente aqueles relacionados com o sistema que se pretende implementar. A partir das respostas dos questionários, deve-se agrupar usuários semelhantes e então criar uma persona para cada grupo.

Personas são usadas também em outras áreas, como projeto de interface com o usuário, marketing, vendas, etc.

Exemplo: Para concluir, segue um exercício no qual listamos as personas do nosso livro e projeto. Mas vamos fazer isso de forma resumida, sem, por exemplo, dar um nome para elas. Então, acreditamos que nossas principais personas são as seguintes:

  • Aluno de curso de graduação. Para atender às necessidades dessa persona procuramos usar uma linguagem leve e direta no livro. Evitamos também fazer um livro extenso e que demandasse um grande esforço para sua leitura e entendimento.

  • Professor de Engenharia de Software. Na verdade, como descrito no prefácio, nossa maior motivação para a escrita do livro foi resolver uma dor que acreditamos comum nesses professores, isto é, a falta de um livro sobre práticas e princípios modernos de desenvolvimento de software. Adicionalmente, como sabemos que esses professores também ministram disciplinas específicas da área de Engenharia de Software (por exemplo, uma disciplina sobre Arquitetura de Software) resolvemos criar nossa coletânea de artigos didáticos.

  • Profissional da área de Engenharia de Software, que busca uma atualização básica sobre certos temas. Assim, para atender às necessidades desses profissionais, também criamos um curso de extensão à distância.

Como essas personas são pessoas do Brasil, o livro foi escrito em português.

2. O que significa Ideal Customer Profile (ICP)?

O significado é quase que literal, isto é, trata-se do público alvo do seu sistema ou produto. Por exemplo, podem ser pessoas físicas ou empresas. Se forem pessoas físicas, deve-se definir gênero, idade, profissão, principais interesses, etc. Se forem pessoas jurídicas, deve-se definir setor de atuação, faturamento, localização geográfica, etc.

Portanto, o conceito de ICP é parecido com o de personas, porém mais abrangente (isto é, não é fragmentado em diferentes perfis) e menos visual. Ele é muito usado por times de vendas durante a prospecção de clientes para um sistema.

3. O que é dogfooding?

Dogfooding é uma outra técnica usada para aproximar desenvolvedores dos produtos de software que eles desenvolvem. No entanto, no caso de dogfooding, a aproximação é total: ou seja, além de desenvolver um sistema, desenvolvedores devem também usá-lo com frequência. O nome tem origem em uma frase comum em inglês: comer a mesma comida do seu cachorro (eat you own dog food).

O objetivo é simples: fazer com os que os desenvolvedores experimentem os benefícios e, principalmente, os problemas e dificuldades relacionados com o uso de um sistema.

Dogfooding é adotado pela maioria das grandes empresas de tecnologia. Por exemplo, no Facebook, os engenheiros também são usuários da rede social, portanto, eles têm conhecimento em primeira mão do que o sistema faz e de quais serviços ele oferece. (link).

Como um segundo exemplo, veja o seguinte tweet do CEO do Google:

No entanto, dogfooding é mais complicado no caso de sistemas para domínios de negócio que requerem usuários especializados. Por exemplo, um sistema para cálculo e geração de apólices de seguros para navios. Mesmo que um desenvolvedor implemente uma parte desse sistema, ele pode não conseguir usá-lo tal como um analista de seguros navais.

4. Como podemos classificar uma manutenção realizada para melhorar o desempenho de um sistema em tempo de execução?

Se ela for realizada após uma reclamação de usuários do sistema, trata-se de uma manutenção corretiva. Se ela for realizada para evitar reclamações futuras sobre uma possível lentidão do sistema, trata-se de uma manutenção preventiva. Porém, se ela for realizada para adaptar o sistema a uma demanda externa (por exemplo, alguma regulamentação), trata-se de uma manutenção adaptativa.

5. Como escrever histórias que valem para dois ou mais papéis de usuários (user roles)?

Por exemplo, suponha que em um sistema para controle de bibliotecas tanto professores como alunos possam doar livros. Logo, podemos escrever essa história assim:

Como professor ou aluno, eu gostaria de doar livros para a biblioteca

Porém, se tivermos várias histórias que valem tanto para professores como para alunos, podemos também criar um novo papel no sistema: usuário, o qual pode ser tanto um professor como um aluno. Feito isso, podemos reescrever a história acima:

Como usuário, eu gostaria de doar livros para a biblioteca

Assim, os papeis professor e aluno ficarão reservados para histórias que são específicas e restritas aos mesmos.


Voltar para a página principal.