Search code examples
requirements

Why do so many sites discuss programming as opposed to describing the systems that they're trying to produce?


There are a lot of sites out there that teach people how to build better software, but why is it that there are very few sites that actually give detailed descriptions of the domains that we (as programmers) are supposed to create? One can only construct so many inventory, accounting, and ERP systems before a pattern of common requirements start to emerge among the different types of systems. Logically speaking, if programmers spend so much time trying to create reusable components in their architectures, does that imply that they should have to have some reusable "blueprint" that describes the systems that they're supposed to create? In other words, it seems like the focus of software development has been too focused on "how" software should be built rather than to catalogue and accurately specify (with detailed requirements) "what" should be used in the first place.

So my question is this: Has there been any work done to catalogue all the different types of system specifications into a single place, all on a single site? If lacking the proper requirements at the start of the project is one of the banes of software development, wouldn't it make more sense to be able to 'reuse' requirement specifications from previous systems of the same type that have already been written?


Solution

  • There's a site Database Answers that attempts to provide solutions for common database designs. That's not the same as a complete solution like you are describing, but it is a step in the right direction.

    You comment "[o]ne can only construct so many [...] systems before" the commonality becomes obvious. However, those who have constructed enough such systems to spot the commonality then attempt to benefit from it by creating their version of the common system, and then they sell it. It is not (perceived to be) in their interest to give other people who might do the same thing a helping hand.