9

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.
5had3sofQu4rtz
  • 201
  • 1
  • 2
  • 4
  • 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
  • @Hey Thanks for the response, I'm actually basing my knowledge on the book "Software Engineering" by Ian Sommerville who provides a completely different definition. He says "User requirements are statements, in a natural language plus diagrams, of what services the system is expected to provide to system users and the constraints under which it must operate." He continues "System requirements are more detailed descriptions of the software system’s functions, services, and operational constraints." – 5had3sofQu4rtz Nov 29 '14 at 23:56
  • 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. –  Nov 30 '14 at 00:12
  • @5had3sofQu4rtz: The User Requirements definition that you cite is precisely in line with the Wikipedia definition. The System Requirements definition sounds like "Functional and Non-Functional Requirements" to me; look those up. – Robert Harvey Nov 30 '14 at 01:10
  • @5had3sofQu4rtz that seems like a pretty unconventional meaning for "system requirements." I've never seen it mean anything other than what a program needs in order to run. For example, [system requirements for Windows 8](http://windows.microsoft.com/en-us/windows-8/system-requirements), [system requirements for Diablo III](https://us.battle.net/support/en/article/diablo-iii-system-requirements). I'd take that author's definition with a large grain of salt. – Hey Nov 30 '14 at 01:42
  • @Hey well I quite like your definition, it seems more instinctive and the distinction between the two requirements is obvious. Unfortunately I'm obligated to follow the definition provided in the book I referenced. – 5had3sofQu4rtz Nov 30 '14 at 08:55
  • @RobertHarvey can you please point me to the wikipedia article you are referring to. I already read the article about the "user requirement(s) document" and the "system requirements specification" and neither of them provide any specific examples. Also according to the book I'm following the user requirements also include functional and non functional requirements. I will update my original post to reflect this. – 5had3sofQu4rtz Nov 30 '14 at 09:04

6 Answers6

13

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.

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

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.

Lutz Prechelt
  • 1,483
  • 9
  • 11
0

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.

scriptin
  • 4,432
  • 21
  • 32
  • 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
0

There is not much difference . User requirements describe what the user should do . System requirements describe how will the user achieve user requirements when interacting with the system plus non functional requirements such as "the system should handle 100000 users at the same time". So:

User requirement : The user should see their test results.

System requirement : The user navigates to the results page, where they can see their test results .

It's so simple but as you can see they describe different things.

Cap Barracudas
  • 1,001
  • 9
  • 17
0
  • I get into my "fabulously computer-controlled car" and "drive to work." What is my user requirement? Obvious enough, I think.

  • Little do I know – or care – that the many computers within my car are "doing a zillion things" along the way, just to safely and successfully take me to my parking-place. All of these are the system requirements, and I as a user I don't care. I'm now at my destination, coffee-cup in hand, and that is enough for me.

  • But, somewhere, there were hardware and software engineers who defined and pored-over every one of those system requirements. So that I would never, ever, have to.

Mike Robinson
  • 1,765
  • 4
  • 10
-2

User requirement tell what application should do to satisfy users needs

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