Olá
Vou explicar mais a tal da regra. A gente se reune com o cliente e ele pede um software que faça “alguma coisa”. Mas geralmente quer esta “alguma coisa” com mais um monte de “exigências”.
No tempo em que eu aprendi a desenvolver sistemas, havia uma outra regra de todo software PRECISA ser descrito com uma única frase. Então, nas primeiras reuniões com o cliente a gente precisa entender bem quais as principais funções do software e começar a elaborar a tal frase. Esta frase precisa ser bem entendida tanto por nós como pelo cliente pois o que está nela nosso software TEM que fazer.
Esta frase começa a documentação do software e com mudanças cosméticas trocando linguagem técnica por marketing ou linguagem humana, esta mesma frase vai para nosso site, folders promocionais e até mesmo contrato entre as partes.
O resto das facilidades a gente deve filtrar e só incluir se for um desejo MUITO forte do cliente manifestado em diversas reuniões, principalmente se ele pagar para fazer. Neste item que chamo de resto incluo relatórios. A gente deve vender relatório por unidade para o cliente sentir no bolso que não deve pedir aqueles relatórios que nunca ninguém lerá.
Requisitos de desempenho precisam ser encarados com cuidado pois às vezes são irreais. Já participei de um projeto onde se pedia throughput de 200 transações por segundo. Mesmo com mais facilidade de máquina que existe hoje, isto é muito difícil quando a transação precisa atravessar por vários servidores e vários firewalls. Provavelmente o cara que escreveu a especificação não tinha a menor idéia disto. Nosso projeto tinha largura de banda de 8 giga, load balancing com 2 + 2 servidores RISC cada um com 12 processadores e 16 Gb de memória + Oracle paralelo em rede gigabit e mesmo assim foi preciso gamb para atender.
PORËM, há algumas facilidades administrativas que a gente deve incluir em TODOS os softwares e que para o cliente não agrega valor a menos em caso de desastre. São coisas como logs, facilidades de localizar erros, facilidades para modificar configurações remotamente sem recompilar, etc. Isto a gente inclui no nosso marketing para provar ao cliente que nosso software vale mais do que o concorrente. Na verdade a gente precisa ter isto pronto como se fosse o framework da nossa empresa. Faz parta da nossa “expertise”.
Escrevi paca mas acho que agora ficou mais claro. Geralmente o cliente não sabe exatamente o que é essencial e pede tudo. Nossa função, com ajuda de alguém que conheça bem o business, é filtrar para fazer um sistema que sirva para a tal “alguma coisa”.
[]s
Luca