O que você sugere é bom do ponto de vista dos puristas de Engenharia de Sistemas.
(Haverá alguns devotos ágeis que acham que tudo é exagerado ... e você deve sair e fazer coisas com as críticas usuais, etc.).
No entanto, você precisa levar em consideração o que está fazendo e para quem está fazendo.
Fazer um projeto para si mesmo é diferente de fazer para outra pessoa - por dinheiro.
Quando você trabalha para outra pessoa (em uma empresa ou sob contrato), os ÚNICOS meios de comunicação estão falando e escrevendo. (Por fim, haverá um produto ou resultado que poderá ser avaliado.)
O objetivo principal de uma especificação é tentar reduzir o custo de fazer correções e alterações que virão mais tarde. Você pode ter visto os gráficos mostrando o custo de fazer correções em diferentes estágios de um projeto, é algo como isto:
Uma correção feita para uma ideia idiota custa US $ 1
Uma correção feita quando a idéia idiota a transformou em uma especificação (que precisa ser atualizada) custa US $ 10
Uma correção feita quando você constrói um protótipo custa US $ 100
Uma correção feita no momento em que você está aceitando antes do envio custa US $ 1000
Uma correção feita depois que você envia e irrita seus clientes custa US $ 10000.
Portanto, o que você escreve em uma especificação é muito importante.
Argumentar que você não deve ter nenhuma especificação é ingênuo, tolo e provavelmente perigoso.
Um dos maiores problemas que você tem ao escrever uma especificação é saber quando você foi longe demais. Isso varia dependendo do tamanho do projeto. Por exemplo, um projeto que leva de 1 a 2 pessoas por ano deve ter entre 2 e 4 SEMANAS no total gasto em especificações ... o que inclui a investigação de viabilidade ... as especificações a serem escritas pelas pessoas que realmente fazem o trabalho não é de algum tipo de analista de alta falutina que não conhece os detalhes sangrentos. Um projeto de 10 pessoas a 2 anos precisa de muito mais tempo.
Agora, para alguns comentários sobre seus vários pontos:
SIM, escreva isso. Mantenha-o em 1-2 parágrafos, no máximo em 1/2 página.
TALVEZ. Somente se agregar valor a todo o resto.
ESSENCIAL. Mostra TODAS as entradas e saídas. Mostra o contexto. Você pode (e deve) gastar um tempo razoável nisso.
- Fatores críticos de sucesso do projeto
TALVEZ. Certamente, se o projeto atender aos requisitos, será um sucesso. Eu acho que isso não é realmente necessário.
NÃO. Seu diagrama de contexto faz isso.
SIM. Tente e seja breve.
- Atores (fontes de dados, atores do sistema)
TALVEZ. Isso me parece um pouco técnico de design, que não deve estar em uma especificação FUNCIONAL.
TALVEZ. Coloque isso (estes) em um apêndice. Explique com palavras. Tente mantê-los em um número pequeno. Vi sugestões de que um projeto não deveria ter mais de 8 casos de uso explicados em detalhes. Não cubra todos os caminhos "infelizes" ou você nunca terminará.
É muito raro qualquer parte de s / w ter um único caso de uso / diagrama de casos de uso.
- Diagrama de fluxo de processo
TALVEZ. Somente se agregar um valor significativo, você estará perdendo seu tempo.
TALVEZ. Somente se agregar um valor significativo, você estará perdendo seu tempo.
SIM - se relevante.
SIM - obrigatório. Devo dizer o que a coisa deve fazer (e com que nível de desempenho).
TALVEZ - se houver algo especial.
TALVEZ - se útil.
- Modelo de domínio (modelo de dados)
TALVEZ - se útil.
- Cenários de fluxo (sucesso, alternativa…)
TALVEZ - se útil.
- Horário (Gerenciamento de tarefas)
NÃO. Não é isso que deveria estar em uma especificação. É sobre programação, planejamento etc.
TALVEZ. Objetivos não são requisitos, são coisas vagas e fofas, que não servem para nada, que servem para enlamear as águas. Tente e evite.
SIM. Essencial. Diz o que a coisa deve fazer.
NÃO. Parte do planejamento e gerenciamento, não os requisitos do que você está criando.
Explicação: Escrevo especificações de produtos, software e sistemas complexos há mais de 15 anos. Todas as coisas comerciais. Principalmente comercialmente bem sucedido e fez muito dinheiro para vários empregadores. Incluindo a especificação para o desenvolvimento Agile s / w, em que você ainda precisa de uma especificação antes de entrar no desenvolvimento. O desenvolvimento REAL pode ser feito no processo que você quiser, mas no final você deve ter três coisas para obter sucesso:
Saiba o que você quer fazer. E ESCREVA-O PARA BAIXO. (Isso é uma especificação.)
Faça coisas para atender o número 1 acima.
Faça algum nível de teste de aceitação da coisa em relação à especificação (que é essencialmente "você fez o que você disse que faria").