For my project, I am required to complete a software requirement and systems requirement for a program I am developing which needs to be fairly detailed. However I am struggling to differentiate between the two on what kind of information is contained in each section. My program is related to artificial intelligence if that helps.
-
3If this is for a class, it would be best to review the lecture material to check what definitions were given for these terms, or to ask the teacher for clarification. While there are attempts to agree on a common definitions of such terms (for example, in the SWEBOK), such efforts had little impact in the industry.– amonCommented Mar 12, 2022 at 11:18
-
2In short, system requirements embody the entire system, not just the software.– Robert HarveyCommented Mar 12, 2022 at 23:26
3 Answers
If all you are doing is writing software, then the distinction is largely meaningless.
System requirements relate to the system as a whole. They may relate to hardware, software, processes, documentation and so on.
You would normally start with the system requirements, then work out which are software requirements, and which apply to other components.
The software requirements may, or may not, end up being word for word copies of the relevant system requirements. Sometimes a software requirement will set out what the software needs to do to perform its part of a larger system requirement.
-
Nice answer. Proposal for improvement: You could mention the term „embedded“ somewhere. Commented Mar 12, 2022 at 18:02
-
1@HartmutBraun would you be able to give any examples of system requirements? Commented Mar 14, 2022 at 8:39
-
@user18372316 e.g. you have 8 machines, each with 4 cores and 32GB of memory.– laike9mCommented Mar 18, 2022 at 5:50
Contrary to popular belief, the term "system" is not as clearly defined as one might think (except for very constraint contexts in very specific problem domains).
In my experience, usually the following scheme is applied in software intensive systems:
The system is that entity with which the user (a human) interacts directly. The user enters information in the system and receives results from it. This means that the system requirements describe what the system (as a whole) shall do from the users/customers perspective. For this reason, system requirements are often burdened with contractual aspects.
Big systems are decomposed in separate components, each of which has a dedicated and specific purpose, irrespective of whether these components are hardware, hardware and software, or software only.
Naturally, the term software requirements only applies to SW-components. This may refer to the software embedded in a hardware component. The description of the hardware layers below the system level but above the SW-level is called the system architecture.
SW requirements are often only specified explicitly for the topmost SW layer. This is the minimum to ensure that the system components will work together in order to fulfill the system requirements, in particular since the components are often developed by different people, teams or companies.
Lower levels of SW decomposition are usually called SW design or SW architecture. There, explicit SW requirements are often not used/neccesary (A special story are safety critical systems, where a complete hierarchy of requirements is mandatory).
This leaves you with essentially two levels of requirements: a) System Requirements and b) SW requirements for each of the top most SW-components (and possibly a system architecture and SW architectures).
Besides that you are quite free how to organize or document your requirements. It is recommended to use unique identifiers for all requirements and its a good idea to put a reference in the SW requirements back to the relevant system requirements.
Even in a pure SW systems, the top level decomposition of the system is usually very clear: there is a front end, there are data base systems, web interfaces, number crunching components, ... Also then it is usually sufficient to have only one layer of SW requirements.
In short, system requirements deal with the hardware and software needed to run an application, while software requirements deal with the features and functionality that the application must provide.