Requisitos de Software Teorias e técnicas para o desenvolvimento de aplicações de qualidade

Thiago Leite e Carvalho

*Você terá acesso às futuras atualizações do livro.

Sobre o livro

Tão importante quanto codificar um software é documentá-lo. Embora isso seja praticamente um axioma, perguntar sobre a documentação de um software é fazer uma pergunta capciosa. É muito mais comum nos depararmos com softwares com documentação inexistente ou insuficiente do que com softwares totalmente documentados e, ainda mais, com documentos de boa qualidade e atualizados. Mas por que isso ocorre? Muitos são os fatores; a seguir, listo os que julgo principais:

- "Falta de tempo" para se documentar;

- Falsa ideia de que o próprio código já é uma documentação boa e suficiente;

- Dificuldade de obter as informações, conhecimentos e comportamentos que constituirão o software;

- Dificuldade de encontrar pessoas com "o dom" para a documentação de software;

- Dificuldade de encontrar pessoas com paciência para documentar um software;

- Acreditar na ideia de que desenvolvedor(a) não é "especificador de requisitos".

Apoiar-se em tais fatores e simplesmente aceitá-los é um erro que leva a graves problemas na criação e manutenção de softwares. Podemos refutá-los de forma bem simples:

- O tempo para se desenvolver um software inclui o tempo de documentá-lo;

- O código é um artefato de baixíssimo nível. Não provê semântica e conhecimento de forma compreensível e acessível a todos;

- Muitas são as técnicas que ajudam e mitigam essa dificuldade;

- Prática e dedicação são suficientes para se criar especialistas em documentação;

- A "mudança de ares" é importante para a realização com excelência de qualquer atividade em qualquer área;

- O desenvolvedor pode ser um bom especificador de requisitos.

Não existem justificativas para um software não ser documentado. Um software sem sua documentação é como o catolicismo sem a Bíblia ou o islamismo sem o Alcorão. A ausência dos "textos-base" sobre um software dificulta seu entendimento, funcionamento e, consequentemente, sua manutenção. É para ajudar na mudança deste cenário que este livro visa fornecer todo o ferramental necessário para a descoberta, entendimento, criação e manutenção dos documentos destinados a expressar todo o conhecimento existente em um software.

Aqui veremos muitos dos conceitos existentes na área da Engenharia de Software que visam auxiliar na criação e manutenção de software de qualidade, no que se refere às suas documentações. Vamos percorrer conteúdos basilares dessa área e adentrar de forma mais profunda e específica na Engenharia de Requisitos, subárea responsável por prover todo o ferramental necessário à realização das atividades de entendimento e documentação de um software, além de ver como a Inteligência Artificial (IA) pode auxiliar a Engenharia de Requisitos, por meio de diversas ferramentas disponíveis no mercado.

Serão abordados tanto conceitos clássicos como os mais atuais, a fim de termos uma visão geral de como as técnicas e atividades mais relevantes hoje foram forjadas ao longo do tempo, chegando, assim, a um processo de documentação moderno e dinâmico, que resulta em documentações mais eficazes e eficientes. Para isso, também navegaremos pelas águas da User Experience (UX), Design Thinking (DT), Metodologias Ágeis (MA), entre outras. Contudo, é importante deixar claro que este livro não é um livro de UX, DT ou mesmo de Engenharia de Software. Trata-se de um livro sobre Requisitos de Software.

É importante frisar que o processo de descobrir, entender, documentar e manter os documentos de software é uma atividade altamente configurável. Ou seja, não existe uma única forma certa e universal de realizá-la. Ela deve estar intimamente ligada ao modus operandi de cada empresa ou projeto. Desse modo, o que é apresentado neste livro é um apanhado de todo o conhecimento que adquiri nessa área após anos de trabalho no desenvolvimento — criação e manutenção — e na documentação de software.

Esse conhecimento foi construído por meio da troca de experiências e vivências com pessoas qualificadas e é compartilhado aqui para que a criação e manutenção da documentação de softwares sejam realizadas de forma eficiente e eficaz. Tudo o que aqui é exposto pode ser evoluído, melhorado e customizado de acordo com necessidades intrínsecas, o que, inclusive, recomendo fortemente.

Este livro foi escrito com muito carinho e dedicação por um desenvolvedor que entende e acredita que documentar um software também é um de seus deveres e que só assim é possível obter o controle da força e levá-la a seu equilíbrio. Com a ajuda da Casa do Código, criamos um livro que tem como principal meta mostrar que documentar bem um software é vital para seu sucesso e que realizar esta atividade é importante, gratificante, acessível e necessária. Agradecemos a escolha deste livro.

Prefácio

A Engenharia de Requisitos ocupa um lugar singular no desenvolvimento de software. Ela está antes do código, antes da arquitetura e, muitas vezes, antes mesmo de qualquer decisão mais visível sobre técnica ou negócio. Ainda assim, é justamente nela que se define o sucesso ou o fracasso de um software. Descobrir, entender, especificar e manter bem os requisitos de um software é compreender pessoas, contextos, problemas e expectativas; é traduzir necessidades reais em soluções possíveis e palpáveis. Não é exagero afirmar que todo bom software começa com bons requisitos.

Conheço o Thiago há muitos anos e acompanho de perto sua trajetória profissional, acadêmica e autoral. Desde seus primeiros livros sobre Orientação a Objetos, Estruturas de Dados e Testes de Software, ele demonstra uma característica rara: a capacidade de unir experiência prática de mercado, vivência acadêmica e compromisso genuíno com o ensino. Seus livros não nascem apenas de teorias, mas principalmente das dificuldades reais enfrentadas por alunos, desenvolvedores, equipes e por ele mesmo, ao longo de projetos reais e desafiadores. Ao longo de sua carreira como desenvolvedor, professor universitário e líder técnico, Thiago percebeu algo que muitos profissionais ignoram por tempo demais: não são apenas falhas de implementação que comprometem um software, mas, sobretudo, falhas de entendimento.

Softwares mal compreendidos, necessidades mal expressas e expectativas mal alinhadas geram retrabalhos, desperdícios e, principalmente, frustrações — independentemente das tecnologias utilizadas. Neste livro, Thiago apresenta de forma direta um dos maiores equívocos da área: a ideia de que "perder tempo" com entendimento e especificação de requisitos é algo burocrático, secundário ou mesmo acessório ao desenvolvimento moderno de software. Pelo contrário, ele demonstra que a Engenharia de Requisitos é viva, mutante, adaptável e absolutamente compatível com metodologias ágeis, Product Discovery, UX, Design Thinking e práticas contemporâneas de desenvolvimento de software.

Com uma abordagem clara, progressiva e fundamentada, Thiago percorre desde os conceitos basilares da Engenharia de Software e da Engenharia de Requisitos até as práticas mais atuais de elicitação, especificação, validação, priorização e manutenção de requisitos. Adicionalmente, ele também mostra como a Inteligência Artificial pode ser uma ótima parceira da equipe de desenvolvimento, ajudando-a a melhorar e otimizar a Engenharia de Requisitos. Todo esse conteúdo é apresentado de forma didática, sem perder a profundidade necessária, sempre conectando teoria, prática e exemplos do mundo real. Trata-se de um livro que ensina não apenas '"o que fazer"', mas, principalmente, '"por que fazer"'.

Assim como em suas obras anteriores, Thiago demonstra grande cuidado na organização do conteúdo, na escolha dos exemplos e na construção de um texto acessível tanto a estudantes quanto a profissionais experientes. Este livro dialoga com desenvolvedores, analistas, product managers, designers e todos aqueles que compreendem que software é, antes de tudo, uma solução de pessoas para pessoas.

Tenho plena convicção de que esta obra ocupará um lugar de destaque na formação de profissionais de tecnologia. Ao concluir a leitura, o leitor não apenas entenderá melhor a Engenharia de Requisitos, mas passará a enxergar o desenvolvimento de software sob uma perspectiva mais madura, responsável e eficaz.

Convido você a embarcar com o Thiago nesta jornada essencial, atual e profundamente necessária, pelo universo dos requisitos de software. O caminho começa antes do código e este livro é um excelente guia para percorrê-lo com consciência e qualidade.

Por Régis Patrick Silva Simão

Sumário

  • 1. Introdução
  • 2. Um pouco de Engenharia de Software
    • 2.1 Histórico
    • 2.2 O que é um software?
    • 2.3 O que é Engenharia de Software?
    • 2.4 Quais temas da Engenharia de Software serão abordados nesse livro?
    • 2.5 Conclusão
  • 3. Um pouco sobre metodologias ágeis
    • 3.1 A filosofia do ágil
    • 3.2 Scrum
    • 3.3 Kanban
    • 3.4 Conclusão
  • 4. Conceitos de requisitos de software
    • 4.1 O que são requisitos de software?
    • 4.2 Os tipos de requisitos
    • 4.3 Os principais artefatos de requisitos
    • 4.4 Um pouco de UML
    • 4.5 Um pouco de banco de dados
    • 4.6 Conclusão
  • 5. A Engenharia de Requisitos
    • 5.1 Por que precisamos da Engenharia de Requisitos?
    • 5.2 As fases da Engenharia de Requisitos
    • 5.3 A nova roupagem da Engenharia de Requisitos: Product Discovery
    • 5.4 Conclusão
  • 6. Aplicação de exemplo
    • 6.1 Let's fun!
    • 6.2 Conclusão
  • 7. Estudo de viabilidade
    • 7.1 Por que avaliar a viabilidade de um software?
    • 7.2 Viabilidade operacional
    • 7.3 Viabilidade técnica
    • 7.4 Viabilidade cronológica
    • 7.5 Viabilidade econômica
    • 7.6 Realizando o estudo de viabilidade
    • 7.7 A viabilidade do Let's Fun!
    • 7.8 Conclusão
  • 8. Elicitação de Requisitos
    • 8.1 Os desafios da elicitação
    • 8.2 Personas
    • 8.3 Entrevistas e Questionários
    • 8.4 Jornada do Usuário (JU)
    • 8.5 Prototipação
    • 8.6 Etnografia
    • 8.7 Job to be done (JTBD)
    • 8.8 Brainstorming
    • 8.9 Inception
    • 8.10 A elicitação do Let's Fun!
    • 8.11 Conclusão
  • 9. Especificação de requisitos
    • 9.1 De onde nascem as especificações?
    • 9.2 Por que devemos criar CDUs, HUs, RNs, CAs e RNFs?
    • 9.3 Boas práticas na criação de CDU, HU, RN, CA e RNF
    • 9.4 Especificando Caso de Uso (CDU)
    • 9.5 Especificando História de Usuário (HU)
    • 9.6 Especificando Regras de Negócio (RN)
    • 9.7 Especificando Critérios de Aceitação (CA)
    • 9.8 Especificando Requisitos Não Funcionais (RNF)
    • 9.9 Especificando a funcionalidade de Aceitar/Rejeitar Convite
    • 9.10 Conclusão
  • 10. Validação e priorização de requisitos
    • 10.1 Validando requisitos
    • 10.2 Priorizando requisitos
    • 10.3 Conclusão
  • 11. Gerenciamento de requisitos
    • 11.1 Por que gerenciar os requisitos de um software?
    • 11.2 O processo de gerenciamento de requisitos
    • 11.3 A rastreabilidade de requisitos
    • 11.4 Conclusão
  • 12. A Engenharia de Requisitos na era da Inteligência Artificial
    • 12.1 Estudo de Viabilidade
    • 12.2 Elicitação
    • 12.3 Especificação
    • 12.4 Validação e Priorização
    • 12.5 Gerenciamento
    • 12.6 Conclusão
  • 13. Epílogo
  • 14. Apêndice I: Relatório de viabilidade do Let's Fun
    • 14.1 Relatório de viabilidade do Let's Fun!
  • 15. Apêndice II: Documento de Visão (DV)
    • 15.1 Documento de Visão do Let's Fun!
  • 16. Apêndice III: Roadmap
    • 16.1 Explicações finais
  • 17. Apêndice IV: Exemplo de Caso de Uso
    • 17.1 Exemplo
    • 17.2 Explicações finais
  • 18. Apêndice V: Exemplo de História de Usuário
    • 18.1 Exemplo
    • 18.2 Explicações finais
  • 19. Apêndice VI: Tutorial sobre Gherkin
    • 19.1 Estrutura básica de uso do Gherkin
    • 19.2 Principais palavras-chave do Gherkin
    • 19.3 Conclusão
  • 20. Apêndice VII: Outras técnicas auxiliares de viabilidade e elicitação
    • 20.1 Canvas MVP
    • 20.2 Matriz CSD
    • 20.3 Design Sprint
    • 20.4 Crazy8s
  • 21. Referências bibliográficas

Dados do produto

Número de páginas:
354
ISBN:
978-85-5519-421-4
Data publicação:
04/2026

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter

*Você terá acesso às futuras atualizações do livro.