Boas práticas para escrever requisitos de software

Boas práticas para escrever requisitos de software

A concepção de um aplicativo ou produto é apenas o ponto de partida, e para garantir que chegue ao cliente final de maneira eficaz, é essencial considerar um planejamento abrangente. Esse planejamento vai além da estratégia de negócios e marketing, incorporando os requisitos de software como peça fundamental.

Mesmo ao solicitar um orçamento, é possível que seja necessário elaborar um documento de requisitos de software para um produto de TI. Esse documento desempenha um papel crucial ao especificar não apenas a natureza do aplicativo ou produto futuro, mas, mais importante ainda, como ele será utilizado e construído.

Apesar da expertise dos desenvolvedores, a recepção clara dos requisitos é vital para evitar discrepâncias nas entregas, estabelecimento inadequado de prazos e execução fora do escopo inicial

Veja a seguir informações importantes sobre requisitos de software e boas práticas para escrever uma documentação clara e concisa. 

O que é requisito de software?

Antes de começar a falar sobre as práticas, vamos falar sobre conceitos. 

A norma IEEE-90, define como sendo:

1- Uma capacidade que um usuário necessita para resolver um problema ou atingir um objetivo;
2. Uma capacidade que deve ser atendida ou possuída por um sistema ou componente de um sistema para satisfazer um contrato, padrão, especificação ou outro documento formalmente imposto;
3. O conjunto de todos os requisitos que formam a base para o desenvolvimento subsequente de um software ou componentes de um software.

 

Em outras palavras, requisitos de software são descrições detalhadas das funcionalidades, comportamentos e restrições que um sistema de software deve atender. Eles são fundamentais para o processo de desenvolvimento, pois servem como uma base para o design, implementação, teste e manutenção do software.

Os requisitos de software descrevem o que o software deve fazer e como deve fazê-lo, e eles são essenciais para garantir que o produto final atenda às necessidades dos usuários e aos objetivos do projeto.

Então, a documentação detalhada dos requisitos não apenas assegura que os desenvolvedores compreendam integralmente os pormenores do produto, mas também facilita a definição de aspectos cruciais, como linguagens de programação, frameworks, APIs e funcionalidades. 

Quais são os tipos de requisitos?

O levantamento de requisitos é o processo que define e documenta as necessidades das partes interessadas para atender aos objetivos do projeto.

Existem vários tipos de requisitos de software, incluindo:

  • Requisitos funcionais: Descrevem as funções e comportamentos específicos do software. Eles respondem à pergunta “O que o software deve fazer?” e geralmente são descritos por meio de casos de uso, histórias de usuário e diagramas de fluxo.
  • Requisitos não funcionais: Descrevem as características de desempenho, segurança, confiabilidade, usabilidade e outros atributos que não estão diretamente relacionados às funcionalidades do software, mas são igualmente importantes. Exemplos incluem requisitos de desempenho, requisitos de segurança e requisitos de usabilidade.
  • Requisitos de interface: Especificam como o software interage com outros sistemas, hardware ou componentes externos. Isso pode incluir requisitos de integração com bancos de dados, sistemas de terceiros ou dispositivos de hardware.
  • Requisitos de sistema: Descrevem os requisitos de alto nível para o sistema de software como um todo. Eles ajudam a definir os limites e restrições do sistema.
  • Requisitos de usuário: Descrevem as necessidades e expectativas dos usuários finais em relação ao software. Isso ajuda a garantir que o software seja projetado com os usuários em mente.
  • Requisitos de negócios: São requisitos relacionados aos objetivos de negócios que o software deve atender. Eles ajudam a alinhar o desenvolvimento de software com os objetivos estratégicos da organização.

A captura e documentação adequada dos requisitos de software são cruciais para evitar mal-entendidos, retrabalho e custos desnecessários durante o desenvolvimento.

Além disso, os requisitos podem evoluir ao longo do ciclo de vida do projeto à medida que novos insights e mudanças nos requisitos do usuário surgem, tornando a gestão de requisitos uma parte importante do processo de desenvolvimento de software.

Exemplos de requisitos de software

Exemplos de requisitos

Requisitos funcionais:

  • A camiseta deve conter sinalizadores que permitam que o corredor seja visto no escuro;
  • O software deve possibilitar acompanhamento do cronograma de projetos pela gerência;
  • O painel multimídia do veículo Ford 1948 deve conter conectividade via Bluetooth;
  • Os usuários devem poder obter o número de aprovações, reprovações e trancamentos em todas as disciplinas de cada turma escolar via portal do aluno.

Requisitos não-funcionais:

  • Capacidade do software em manter sua integridade após a ocorrência de falhas não controladas. Ex: Queda de luz (Confiabilidade);
  • Camiseta deve ter 20% de elasticidade para vestimenta sem prejudicar a malha (Usabilidade);
  • Capacidade dos sinalizadores deve ter resistência a lavagem via máquinas lava-roupas  (Desempenho);
  • A intranet da empresa deve rodar em qualquer browser. Ex: I.E., Firefox, Google Chrome, etc.. (Disponibilidade);
  • O software deve ter disponibilidade de 99,5% no horário comercial (Disponibilidade).

Requisitos de qualidade:

  • Os testes de resistência a lavagem do produto não podem apresentar mais do que 1% de erros (Qt de camisetas testados X Qt total de camisetas);
  • O indicador de chamados abertos com erros após liberação deve ser menor do que a meta estabelecida na operação. (Ex: % de chamados abertos por fatura gerada);

 Critérios de aceitação:

  • Testar a consulta de ordem de corte, cronometrar para avaliar se está acima do tempo esperado (10s). Caso estiver acima o aceite do requisito será negado;
  • Usar a funcionalidade de geração da Ordem de corte nos browsers I.E., Firefox, Google Chrome. Caso o resultado não for igual nos 3 browsers, o aceite do requisito será negado.

Para que serve a análise de requisitos?

Segundo Miranda (2002 apud Santos, 2007, p12):

50% dos principais problemas/defeitos se software são oriundos da fase de especificação de requisitos;
12% das principais causas de fracassos em projetos são oriundos de requisitos incompletos;
12% das principais causas de sucesso em projetos são oriundos de requisitos consistentes.

 A análise de requisitos de software desempenha papel essencial no planejamento de escopo do projeto. Ela visa identificar e especificar todos os requisitos funcionais e não funcionais que guiarão o desenvolvimento do software. Isso inclui entender as metas e objetivos do projeto, identificar os stakeholders relevantes, definir limites e fronteiras do sistema, e documentar de maneira precisa e compreensível as funcionalidades essenciais.

 Entenda na prática:

  • Projeto: Churrasco
  • Escopo de projeto: Como o trabalho será executado, quais são as etapas para a realização do Churrasco (definição do cardápio, participantes, local, horário, valores, etc.)
  • Escopo de Produto: Tipo de carne, tempero, bebida, etc.
  • Requisitos do Produto: Realizar um churrasco para as pessoas da turma de GP, baixo custo, local central, etc.

Escopo de projeto X Escopo de produto X Requisito de projeto

 

Entenda a importância da análise de requisitos

  • Alinhamento com objetivos de negócios: A análise de requisitos de software ajuda a garantir que o software a ser desenvolvido esteja alinhado com os objetivos e metas mais amplos da organização.
  • Especificação clara de funcionalidades: A análise de requisitos permite a especificação clara e detalhada das funcionalidades que o software deve ter.
  • Redução de ambiguidades: A análise de requisitos ajuda a identificar e reduzir ambiguidades nos requisitos. Isso é vital para evitar interpretações errôneas durante as fases posteriores do desenvolvimento, como design, implementação e teste.
  • Base para o design e desenvolvimento: Os requisitos de software  servem como a base para o design e desenvolvimento do software. Uma análise de requisitos bem-feita facilita a criação de uma arquitetura adequada, a escolha de tecnologias apropriadas e a implementação de funcionalidades conforme as necessidades dos usuários.
  • Estimativa de custos e prazos: Com requisitos bem definidos, é possível ter uma compreensão mais clara do esforço necessário, recursos necessários e potenciais desafios, o que contribui para estimativas mais precisas.
  • Facilita a comunicação: Os requisitos de software facilitam a comunicação eficaz entre as partes interessadas, incluindo desenvolvedores, clientes, gerentes de projeto e outros envolvidos. Isso ajuda a garantir que todas as partes tenham uma compreensão comum das expectativas e do escopo do projeto.
  • Facilita a manutenção e evolução: Requisitos bem documentados facilitam a manutenção e evolução contínua do software. Com uma compreensão clara dos requisitos, é mais fácil realizar atualizações, correções de bugs e implementar novas funcionalidades no futuro.

Importância da análise de requisitos

Ferramentas e técnicas para coleta de requisitos

Um passo inicial importante para a definição de requisitos de software é identificar as partes interessadas relevantes, incluindo usuários finais, clientes e gerentes de projeto. O envolvimento ativo desses stakeholders é essencial para compreender completamente as expectativas e necessidades do sistema.

Entrevistas são uma ferramenta fundamental para a coleta de requisitos de software, permitindo diálogos diretos com esses stakeholders para identificar funcionalidades essenciais, restrições e desejos. Além disso, questionários podem ser úteis para obter insights de um grande número de pessoas de maneira eficiente, especialmente em contextos nos quais a participação presencial é desafiadora.

Workshops colaborativos também são úteis, pois facilitam a interação ativa entre os membros da equipe de desenvolvimento e os stakeholders, promovendo a resolução de divergências e o alinhamento de expectativas. A observação do usuário no ambiente de trabalho real, prototipagem rápida e técnicas como mapeamento de jornada do usuário são abordagens valiosas para compreender as interações práticas e as necessidades específicas dos usuários.

A análise de documentação existente, como manuais e relatórios, pode fornecer informações adicionais, enquanto técnicas como brainstorming e análise SWOT (Forças, Fraquezas, Oportunidades, Ameaças) ajudam a explorar ideias e avaliar o contexto mais amplo do projeto.

É fundamental aplicar uma abordagem iterativa à coleta de requisitos de software, pois as necessidades dos usuários podem evoluir ao longo do tempo. A comunicação clara e constante entre a equipe de desenvolvimento e os stakeholders é essencial para garantir que os requisitos sejam compreendidos e documentados de maneira precisa, clara, concisa e passível de revisão contínua à medida que o projeto avança.

  

Conteúdo do documento de requisitos

O documento de requisitos de software serve como uma referência central para as funcionalidades, restrições e expectativas do sistema a ser desenvolvido. O conteúdo específico pode variar dependendo do tipo de projeto e das necessidades das partes interessadas, mas geralmente inclui os seguintes elementos:

  • Necessidade ou oportunidade que precisa ser atendida;
  • Objetivos do projeto e relação com os objetivos do negócio;
  • Requisitos funcionais 
    • especificam o que o produto deve ser capaz de executar 
  • Requisitos não-funcionais 
    • precisão, confiabilidade, segurança, desempenho, rentabilidade , disponibilidade 
  • Requisitos de qualidade;
  • Critérios de aceitação.

 

Exemplo de documentos dos requisitos de software 

Exemplo de documento de requisitos

Matriz de rastreabilidade de requisitos  

Boas práticas de como escrever requisitos de software 

Escrever requisitos de software de forma clara, completa e precisa é fundamental para o sucesso do projeto. Aqui estão algumas boas práticas que podem ajudar nesse processo:

Compreenda o negócio: Entenda completamente o contexto de negócios e as necessidades dos usuários antes de começar a escrever requisitos de software. .Comunique de forma clara: Utilize uma linguagem clara, concisa e compreensível para todos os stakeholders, incluindo desenvolvedores, testadores e clientes.

Use uma estrutura padronizada: Organize os requisitos de forma estruturada, como usando uma abordagem baseada em casos de uso, histórias de usuário ou especificações funcionais.

Especifique requisitos mensuráveis: Torne os requisitos de software mensuráveis sempre que possível, usando critérios claros de aceitação para avaliação do sucesso.

Evite ambiguidades: Evite termos vagos e ambíguos. Seja específico e evite interpretações diversas.

Divida em tarefas gerenciáveis: Dividir requisitos grandes em partes menores e gerenciáveis facilita o desenvolvimento iterativo e incremental.

Inclua requisitos não funcionais: Além dos requisitos funcionais, inclua requisitos não funcionais, como desempenho, segurança e usabilidade.

Defina prioridades: Priorize requisitos de software com base na importância para o negócio e nas restrições do projeto.

Faça uma documentação adequada: Forneça documentação adicional sempre que necessário, como diagramas, protótipos ou exemplos concretos.

Mantenha consistência e coerência: Verifique a consistência e coerência dos requisitos para evitar contradições ou redundâncias.

 

Os requisitos devem sempre descrever “o que” e não o “como” 

Correto: O sistema deve possibilitar opção de impressão dos relatórios de MRP
Incorreto: Incluir um botão verde, no canto superior esquerdo, nas telas de consulta para imprimir o relatório do MRP.

 

Correto: O sistema deve apresentar ao usuário, quando requerido, os relatórios disponíveis para seleção;
Incorreto: Ao abrir o menu relatórios, o usuário poderá selecionar o relatório desejado através da tecla ENTER.

 

Um bom requisito específico comunica de maneira clara, algo que é necessário, atingível e verificável.

Claro: Cada requisito deve expressar um único pensamento, ser conciso e simples. Isto vai evitar que o mesmo seja mal interpretado;
Necessário: Se existe alguma dúvida sobre a necessidade do requisito, faça a seguinte pergunta: Qual a pior coisa que pode acontecer se este requisito não for incluído? Se você não encontrar resposta ou alguma consequência para a não inclusão deste requisito então ele não é necessário ao projeto. 

 

Um bom requisito específico comunica de maneira clara, algo que é necessário, atingível e verificável.

 

Verificável: Do mesmo modo que você escreve um requisito, você precisa determinar como que vai verificar o mesmo. Cuidar com palavras como “fácil”, “rápido”, pois a subjetividade trará problemas para verificação. Determinar o critério de aceitação, o ajudará a saber se seu requisito é verificável;
Atingível: Para ser atingível, um requisito precisa ser tecnicamente possível de realização, dentro de orçamento, prazos, etc.

  

Dicas para redação

  • Use frases imperativas utilizando palavras como: deve, precisa;
  • As frases devem ser preferencialmente afirmativas;
  • Evite palavras subjetivas como: suporte, adequado, com o mínimo, como aplicável, fácil, como apropriado, mas não limitado a, rápido, suficiente. 

  

Criar uma documentação de requisitos de software é essencial para o sucesso

Compreender a importância dos requisitos de software não apenas otimiza o desenvolvimento do produto, mas também contribui para o alinhamento efetivo entre as expectativas do cliente e a entrega final do produto.  Afinal, a coleta de requisitos estabelece as bases para o design e implementação do sistema, garantindo que atenda às necessidades dos usuários e aos objetivos do projeto.

Ao seguir os passos e as melhores práticas mencionadas aqui, você estará no caminho certo para fazer uma análise de requisitos de software eficaz que orientará o planejamento, execução e controle do seu projeto.

Lembre-se de envolver as partes interessadas relevantes, coletar informações abrangentes e definir objetivos claros e alcançáveis. Com uma documentação bem elaborada, você estará melhor preparado para enfrentar os desafios e entregar resultados de qualidade dentro do prazo e orçamento estabelecidos.

Se você está procurando uma equipe especializada para desenvolver um projeto, conte com a Lyncas. Oferecemos suporte e expertise na transformação digital, ajudando sua empresa a definir uma estratégia sólida e implementar soluções digitais adequadas ao negócio. Entre em contato para obter mais informações sobre nossos serviços e entenda como podemos impulsionar sua jornada de transformação digital.

 

Andreia Justo

Andreia Justo

Diretora de Transformação Organizacional na Lyncas, com mais de 30 anos de experiência no Desenvolvimento e Transformação de Negócios em empresas nacionais e multinacionais, buscando a ambidestria organizacional, focando na eficiência e eficácia da operação e flexibilidade para responder a novas necessidades do mercado. É mãe, avó e preza muito pelo tempo junto com a sua família. Adora conhecer novos lugares e estar em contato com a natureza.

Artigos relacionados

SAFe: melhoria contínua com agilidade

SAFe: melhoria contínua com agilidade

O Scaled Agile Framework (SAFe), em português, Estrutura Ágil Dimensionada,..

Continuar lendo

Cadastre-se na newsletter

Receba conteúdos exclusivos sobre transformação digital, IA, tendências tecnológicas e muito mais, diretamente no seu e-mail.

    Política de Privacidade

    Utilizamos Cookies para armazenar informações de como você usa o nosso site com o único objetivo de criar estatísticas e melhorar as suas funcionalidades.