Requisitos de software
1. Requisitos funcionais
Requisitos funcionais são especificações detalhadas que descrevem as funções, características e interações que um sistema ou software deve possuir. Eles definem o que o sistema deve fazer em resposta a entradas específicas ou em condições determinadas. Em outras palavras, os requisitos funcionais descrevem as funcionalidades que o sistema deve oferecer para atender às necessidades e expectativas dos usuários e dos stakeholders.
Por exemplo, para um sistema de vendas online, um requisito funcional pode ser: "O sistema deve permitir que os usuários adicionem produtos ao carrinho de compras e realizem o checkout para finalizar a compra".
1.1. Como Definir Requisitos Funcionais
Entendimento do Negócio: Antes de tudo, é crucial entender o domínio do negócio e os objetivos do projeto. Isso fornece um contexto para a definição dos requisitos.
Reuniões e Workshops: Organize sessões de brainstorming com stakeholders, incluindo gerentes de projeto, desenvolvedores, designers e, claro, representantes dos usuários finais.
Use Casos e Histórias de Usuários: Descreva cenários específicos de como os usuários interagirão com o sistema. Isso ajuda a visualizar as funcionalidades necessárias e a identificar possíveis lacunas.
Prototipagem: Crie protótipos ou mockups do sistema para visualizar como ele funcionará. Isso pode ajudar a identificar requisitos adicionais e a obter feedback antecipado.
1.2. Importância do Cliente na Definição de Requisitos Funcionais
O cliente, seja ele um usuário final ou um representante de uma organização cliente, é fundamental na definição de requisitos funcionais. Aqui estão as razões:
Perspectiva do Usuário: O cliente oferece uma perspectiva única, a do usuário. Eles podem fornecer insights sobre o que realmente precisam e esperam do sistema.
Validação: Ao envolver o cliente no processo de definição, é possível validar os requisitos à medida que são desenvolvidos, garantindo que o sistema atenda às suas necessidades.
Priorização: O cliente pode ajudar a priorizar requisitos com base em sua importância e valor para o negócio.
Redução de Riscos: Ao entender e documentar corretamente os requisitos do cliente desde o início, reduz-se o risco de retrabalho, custos adicionais e insatisfação do cliente no final do projeto.
Relacionamento e Confiança: Envolver o cliente no processo fortalece o relacionamento e constrói confiança, pois eles veem que suas opiniões e necessidades são valorizadas.
2. Requisitos não funcionais
O artigo acima aborda os requisitos não funcionais (RNFs) em software e sistemas. Ele pode ser resumido da seguinte maneira:
Introdução: Assim como uma motocicleta tem características além de simplesmente se mover de um ponto A para um ponto B, um software também tem requisitos que não estão diretamente relacionados à sua função principal, mas são essenciais para atender às necessidades do usuário final.
Definição: Os requisitos não funcionais descrevem as capacidades operacionais do sistema e tentam melhorar sua funcionalidade. Eles abordam aspectos como velocidade, segurança, confiabilidade e integridade dos dados.
Diferença com Requisitos Funcionais: Enquanto os requisitos funcionais definem o que um produto deve fazer (por exemplo, um mensageiro deve permitir a edição de mensagens), os requisitos não funcionais especificam os atributos de qualidade do sistema.
Tipos de Requisitos Não Funcionais:
- Performance e Escalabilidade: Refere-se à rapidez com que o sistema retorna resultados e como essa performance muda com cargas de trabalho maiores.
- Portabilidade e Compatibilidade: Aborda em quais hardwares, sistemas operacionais e navegadores o software funciona e se ele é compatível com outras aplicações.
- Confiabilidade, Manutenibilidade e Disponibilidade: Estes tratam da frequência de falhas críticas, o tempo necessário para corrigir problemas e a probabilidade de o sistema estar acessível a qualquer momento.
- Segurança: Garante que todos os dados dentro do sistema sejam protegidos contra ataques maliciosos ou acesso não autorizado.
- Localização: Define quão bem um sistema se alinha com o contexto do mercado local, incluindo idiomas, leis, moedas, entre outros.
- Usabilidade: Aborda a facilidade de uso do produto.
Recomendações Gerais:
- Tornar os RNFs mensuráveis e testáveis.
- Definir requisitos para componentes do sistema e não apenas para produtos inteiros.
- Vincular RNFs a objetivos de negócios.
- Considerar limitações de terceiros e arquitetônicas.
- Consultar padrões e guias existentes.
2.1. Requisitos não funcionais na robótica
Para definir RNFs para um projeto de robótica, deve-se começar por entender o contexto em que o robô será usado. Isso pode incluir ambientes como casas, escritórios, lojas ou espaços públicos. A seguir, deve-se considerar os seguintes questionamentos:
Performance e Escalabilidade:
- Quão rápido o robô deve responder às solicitações do usuário?
- Qual é a capacidade máxima de usuários simultâneos que o chatbot e o LLM podem atender?
Portabilidade e Compatibilidade:
- Em quais superfícies ou terrenos o robô deve operar?
- O robô precisa ser compatível com outros sistemas ou dispositivos?
Confiabilidade e Disponibilidade:
- Qual é a taxa aceitável de falhas do robô?
- O robô precisa funcionar 24/7 ou em horários específicos?
Segurança:
- Como os dados do usuário serão protegidos?
- Existem medidas para evitar que o robô seja hackeado ou manipulado?
Usabilidade:
- Quão intuitivo é para os usuários interagirem com o robô e o chatbot?
- O robô e o chatbot devem suportar múltiplos idiomas ou dialetos?
Manutenibilidade:
- Com que facilidade o robô pode ser reparado ou atualizado?
- Como as atualizações do software do chatbot e LLM serão implementadas?
Autonomia:
- Qual é a duração da bateria do robô?
- O robô pode se auto-carregar ou precisa ser carregado manualmente?
2.2. Criação de Testes para Validar RNFs de um robô de serviço
Testes de Performance:
- Simule várias cargas de trabalho no chatbot e LLM para garantir que eles possam lidar com múltiplas solicitações simultaneamente.
- Teste a velocidade de movimento e resposta do robô em diferentes cenários.
Testes de Portabilidade:
- Faça o robô operar em diferentes superfícies e ambientes para verificar sua adaptabilidade.
Testes de Confiabilidade:
- Execute o robô continuamente por longos períodos para identificar possíveis falhas ou problemas de desempenho.
Testes de Usabilidade:
- Realize testes com usuários reais para obter feedback sobre a interface e a experiência do usuário.
- Avalie a precisão e relevância das respostas do chatbot e LLM.
Testes de Manutenibilidade:
- Implemente atualizações fictícias para o software do chatbot e LLM e verifique a facilidade e eficácia do processo.
Testes de Autonomia:
- Monitore a duração da bateria do robô em diferentes condições de uso.
- Teste o processo de carregamento, seja manual ou autônomo.