Atualmente, estou trabalhando em um projeto, no qual tenho que analisar os requisitos de dois sistemas de TI, que usam computação em nuvem, para uma API em nuvem. Em outras palavras, tenho que analisar quais requisitos esses sistemas têm para uma API de nuvem, para que eles possam trocá-la, enquanto conseguem atingir seus objetivos atuais.
Deixe-me dar um exemplo para alguns requisitos informais do Projeto A:
- Ao iniciar máquinas virtuais na nuvem por meio da API, deve ser possível especificar o tamanho da memória, tipo de CPU, sistema operacional e uma chave SSH para o usuário raiz.
- Deve ser possível monitorar o tráfego da rede de entrada e saída por hora por máquina virtual.
- A API deve suportar a atribuição de IPs públicos a uma máquina virtual e a recuperação dos IPs públicos.
- ...
Em uma fase posterior do projeto, analisarei alguns padrões de computação em nuvem que padronizam as APIs da nuvem para descobrir onde estão as possíveis falhas nos padrões atuais. Uma descoberta poderia e provavelmente será que um determinado padrão não suporta o monitoramento do uso de recursos e, portanto, atualmente não é utilizável.
Atualmente, estou tentando encontrar uma maneira de anotar e classificar sistematicamente meus requisitos. Eu sinto que a maneira como eu as escrevo atualmente (como os três pontos acima) é muito informal.
Li alguns livros de engenharia de requisitos e arquitetura de software, mas todos eles se concentram demais nos detalhes e na implementação. Realmente me importo apenas com as funcionalidades fornecidas pela API / interface e não acho que os diagramas UML etc. sejam a escolha certa para mim. Acho que atualmente os requisitos que coletei podem ser descritos como histórias de usuários, mas isso já é suficiente para uma análise sofisticada de requisitos? Provavelmente eu deveria ir "um nível mais fundo" ...