From what I've read I believe user requirements are just the system requirements given in lay mans terms, is this correct? I'm specifically referring to the book "Software Engineering" by Ian Sommerville which I am obligated to follow. Given the example below from said book, why is there not a user requirement to match the second system requirement. For example "the user requires the report to be generated after 17.30 on the last working day of the month." To me that is still in natural language so it is readable by the user. How much detail should be included in a user requirement vs system requirement and where do you draw the line?

User Requirement Definition:

1. The MHC-PMS shall generate monthly management reports showing
   the cost of drugs prescribed by each clinic during that month.

System Requirements Specification:

1.1. On the last working day of each month, a summary of the drugs
     prescribed, their cost, and the prescribing clinics shall be generated.
1.2. The system shall automatically generate the report for printing after
     17.30 on the last working day of the month.
  • 3
    What can we tell you that the Wikipedia articles don't already explain very well? – Robert Harvey Nov 29 '14 at 22:53
  • 3
    They are entirely different. User requirements are features the users need the software product to support, and system requirements are features the software product needs the host environment to support. – Hey Nov 29 '14 at 23:15
  • @Hey could you provide an example please? – 5had3sofQu4rtz Nov 29 '14 at 23:38
  • @5had3sofQu4rtz a program's intended user base users might need the program to have a save feature and an undo feature (user requirements). The program might need half a gig of disk space and half a gig of ram to run, and maybe it only runs on Windows (system requirements). – Hey Nov 29 '14 at 23:43
  • 1
    @5had3sofQu4rtz you will find that every company has a different definition and categorization of requirements along with different degrees of specification necessary for each type of requirement. – user40980 Nov 30 '14 at 0:12

I'll speak to your examples.

The first example of a "user requirement" is more like a wish or "feature." The way you can tell the difference between a feature and a requirement is that there's enough detail in the requirement to make it testable. Requirement 1 is not testable because, well, it's a wish. "I wish that the system had some reports for the managers." How do you know that the requirement has been achieved, that you can declare success?

Requirement 1.1 is testable because you can wait until the last working day of the month, and see if a report is generated on that day (or you can inject dates into the system and observe its behavior).

Requirement 1.2 is testable for the same reasons.

Neither system requirement, however, tells you what the reports should look like, how the data is laid out, or how the calculations are made; they only describe the reports in general terms. In practice, there will be a Software Design Specification of some sort that tells you in detail what these reports will look like.

| improve this answer | |
  • 1
    +1 for requirements being "testable". I was going to answer myself until I read this. – maple_shaft Dec 2 '14 at 17:40
  • For some more detail on the differences, there is a thorough discussion and literature review in dspace.lboro.ac.uk/2134/19303 – Richard EB Oct 12 '16 at 2:42

In the sense of Ian Sommerville's software engineering book:

User requirements talk about the problem domain, the world of the user. They describe what effects need to be achieved. These effects are the combined responsibility of the software, the hardware, and the users (together: the socio-technical system).

System requirements talk about the solution domain, the world of the software logic. They describe what the software must do (as opposed to the effects in the user's world that this may or may not achieve). They are the responsibility of the technical system alone (without the socio part).

For instance for a bookkeeping software,

  • the user requirement is to compute the correct revenue.
  • But the system requirement is only to compute the correct sum of the partial revenues entered by the user.

If the user enters incorrect partial revenues the software is not required to magically correct them: The output will be the correct sum of the inputs, but not the correct overall revenue.

The difference is not overly interesting for most simple information systems. It can be very important for life-critical software; see for instance the various accidents involving the issue when or when not the thrust reversal can be activated on a commercial airplane: The user requirement "reverse thrust can only be activated if the airplane is on a runway" has turned out to be surprisingly tricky to turn into system requirements that reliably lead to the desired effect.

| improve this answer | |

User requirements tell what application must/should do to satisfy user's needs. It a list of features an application must/should have, and it is used a guidance when you develop an application: then all points are checked, you are (probably) done.

I tend to call this simply the "list of features".

System requirements tell what system should have to be able to run the program:

  • Hardware: CPU, memory, disk space, etc.
  • Software: OS, libraries, packages, etc.

There is a bit of confusion:

  • In "user requirements" the user is a subject, the one that require, and the program being developed is an object.
  • In "system requirements" the program being developed is a subject (and it's not even mentioned in a phrase), while "system" is an object.

The word "system" can refer to different things:

  • software being developed
  • physical device which runs the software being developed
  • network of such devices
  • OS together with execution environment

The thing you've called "System Requirements Specification" is probably something like the Software requirements specification - I consider that to be a superset of user requirements.

| improve this answer | |
  • Thanks for responding. The system requirements defined by Ian Sommerville are a bit different from this. For example, I wouldn't state that "the system requires Microsoft windows XP." It does seem to be a popular interpretation though. Your discussion about the "confusion" between the two requirements has been very helpful. – 5had3sofQu4rtz Nov 30 '14 at 19:22

User requirement tell what application should do to satisfy users needs

System requirements tell a system should have to be able to run program

| improve this answer | |
  • 3
    is this merely your opinion or you can back it up somehow? – gnat Jun 28 '17 at 11:26

Not the answer you're looking for? Browse other questions tagged or ask your own question.