Jika masalahnya adalah masalah umum seperti, katakanlah, menulis kompiler atau browser, persyaratannya cukup banyak diberikan dalam bentuk standar bahasa, sistem operasi target dan perangkat keras target, dll.
Untuk hal-hal seperti GNU Emacs, yang merupakan banyak hal bagi banyak orang selain memenuhi tujuan awalnya sebagai editor teks, saya pikir persyaratannya masuk akal karena ruang lingkup yang luas untuk memperluasnya. Obrolan, email, newsgroup, pengeditan kode, kontrol versi muncul di pikiran. Ada seorang ilmuwan riset yang bekerja di Emacspeak. Saya pikir hal serupa dapat dikatakan tentang browser dan hal-hal lain yang memungkinkan ekstensi.
Jika perangkat lunak mengejar fungsi yang hanya tersedia dalam perangkat lunak non-sumber terbuka, persyaratannya cukup banyak diberikan lagi.
EDIT:
Ketika perangkat lunak open source melanjutkan ke pemeliharaan dan lebih sedikit persyaratan asli tetap tidak terpenuhi, sebagian besar persyaratan dapat berasal dari bug, perlu beradaptasi dengan platform baru seperti CPU multi-core dan perangkat keras lain yang menawarkan kinerja yang lebih baik ketika dieksploitasi, dan semacamnya.
Dalam proyek yang sepenuhnya berbasis penelitian seperti GNU Hurd, saya pikir persyaratannya berasal dari hasil penelitian dan makalah.
Untuk menyimpulkan,
ketika memulai, persyaratan untuk perangkat lunak yang berupaya memecahkan masalah umum dapat berasal dari dokumen standar
untuk perangkat lunak yang mengejar ketinggalan dengan perangkat lunak lain yang ada, persyaratannya mungkin untuk menghasilkan semua atau sebagian besar set fitur perangkat lunak yang ada dan beberapa fitur lain yang menurut pengembang / pengguna menarik untuk dimiliki.
untuk proyek penelitian, makalah dan publikasi lainnya dapat menetapkan persyaratan
ketika dalam pemeliharaan, bug, perlu beradaptasi dengan lingkungan yang lebih baru dapat menjadi sumber utama untuk persyaratan