Se il problema è comune, ad esempio scrivendo un compilatore o un browser, i requisiti vengono forniti in forma di standard linguistici, sistemi operativi di destinazione e hardware di destinazione, ecc.
Per cose come GNU Emacs, che è molte cose per molti, oltre ad ottemperare in modo eccellente al suo obiettivo originale di essere un editor di testo, penso che le esigenze fossero sensate a causa dell'immenso scopo di estenderlo. Chat, email, newsgroup, editing del codice, controllo della versione vengono in mente. C'è uno scienziato che lavora su Emacspeak. Penso che cose simili possano essere dette dai browser e da altre cose che consentono estensioni.
Se il software sta recuperando una funzione disponibile solo in un software non open source, il requisito viene praticamente restituito.
EDIT:
Quando il software open source passa alla manutenzione e restano insoddisfatti meno requisiti originali, la maggior parte dei requisiti può derivare da bug, necessità di adattarsi a nuove piattaforme come CPU multi core e altri hardware che offrono prestazioni migliori quando sfruttate, e ad esempio.
In un progetto completamente basato sulla ricerca come GNU Hurd, penserei che i requisiti derivino da risultati e documenti di ricerca.
Per riassumere,
-
all'inizio, i requisiti per il software che tenta di risolvere problemi comuni possono provenire da documenti standard
-
per software che sta raggiungendo altri software esistenti, è probabile che i requisiti siano la produzione di tutte o la maggior parte delle funzionalità del software esistente e alcune altre funzionalità che gli sviluppatori / utenti ritengono interessante avere
-
per progetti di ricerca, documenti e altre pubblicazioni potrebbe impostare i requisiti
-
in fase di manutenzione, i bug, la necessità di adattarsi agli ambienti più recenti possono essere la fonte principale per i requisiti