A funcionalidade e a capacidade de um sistema são especificadas através de uma variedade de métodos, dependendo da complexidade do sistema e do objetivo da especificação. Essas especificações são cruciais para design, desenvolvimento, teste e implantação. Aqui estão algumas abordagens importantes:
1. Requisitos funcionais: Eles descrevem * o que * o sistema deve fazer. Eles são frequentemente expressos como:
*
Use casos: Descreva as interações entre os usuários (ou outros sistemas) e o sistema, descrevendo uma sequência específica de ações e resultados esperados.
*
Histórias de usuário: Descrições mais curtas e mais informais da funcionalidade da perspectiva de um usuário (por exemplo, "Como cliente, quero poder adicionar itens ao meu carrinho de compras para que eu possa comprá -los mais tarde.").
*
Listas de recursos: Uma simples enumeração dos recursos do sistema. Menos detalhado do que os casos de uso, mas útil para planejamento de alto nível.
*
Diagramas de estado: Mostre os diferentes estados que um sistema pode estar e como ele faz a transição entre eles. Útil para sistemas com gerenciamento complexo de estado.
*
Diagramas de fluxo de dados: Ilustre o fluxo de dados através do sistema.
2. Requisitos não funcionais (ou atributos de qualidade): Eles descrevem * como * o sistema deve executar. Eles geralmente estão relacionados a:
*
desempenho: Tempos de resposta, taxa de transferência, taxas de transação, utilização de recursos (CPU, memória, rede). Frequentemente expresso quantitativamente (por exemplo, "o sistema deve responder às solicitações do usuário dentro de 2 segundos").
*
escalabilidade: Capacidade de lidar com o aumento da carga (usuários, dados, transações). Freqüentemente especificado em termos de crescimento esperado e desempenho do sistema sob esse crescimento.
*
Segurança: Proteção contra acesso não autorizado, violações de dados e outras ameaças. Definido através de políticas de segurança e mecanismos de controle de acesso.
*
Confiabilidade: Frequência e duração das falhas, tempo médio entre falhas (MTBF), tempo médio para recuperação (MTTR).
*
Disponibilidade: Porcentagem de tempo o sistema está operacional.
*
Manutenção: Facilidade de modificar e atualizar o sistema.
*
usabilidade: Facilidade de uso para usuários pretendidos. Frequentemente medido através de testes e feedback do usuário.
*
Portabilidade: Capacidade de executar em diferentes plataformas e ambientes.
3. Requisitos de capacidade: Eles descrevem a capacidade do sistema de lidar com uma certa carga de trabalho. Isso inclui:
*
Volume de dados: Quantidade de dados O sistema precisa armazenar e processar.
*
Concorrência do usuário: Número de usuários simultâneos O sistema pode suportar.
*
Taxa de transação: Número de transações O sistema pode processar por unidade de tempo.
*
Limites de recursos: Limites para CPU, memória, armazenamento, largura de banda de rede.
Métodos para especificar funcionalidade e capacidade: * idioma natural: Frequentemente usado para descrições de alto nível, mas pode ser ambíguo.
*
Línguas formais de especificação: Use notações matemáticas ou lógicas precisas para evitar ambiguidade (por exemplo, z, VDM). Mais rigoroso, mas requer experiência especializada.
*
Línguas de modelagem: Use notações visuais para representar a estrutura e o comportamento do sistema (por exemplo, UML). Um bom equilíbrio entre precisão e entendimento.
*
Documento de Especificação de Requisitos do Sistema (SRS): Um documento formal que descreve de forma abrangente todos os requisitos funcionais e não funcionais.
A escolha dos métodos depende de fatores como o tamanho do projeto, a complexidade, o orçamento e a experiência técnica da equipe. Freqüentemente, uma combinação desses métodos é usada para criar uma especificação abrangente e clara. É crucial garantir que as especificações sejam inequívocas, completas, consistentes e verificáveis. A rastreabilidade entre requisitos, design e implementação também é importante para o desenvolvimento e manutenção eficaz do sistema.