Software Specification (SRS): What are System Interfaces?
The Wikipedia link for the SRS in the Product Perspective section mentions the term System Interfaces. I don't understand what exactly this means. I have looked at several other SRS samples available on the internet, but have not been able to collect an unambiguous definition from the examples. Can anyone elaborate on what "System Interfaces" means?
source to share
The IEEE 830-1998 standard defines "Hardware Interfaces" as
'the logical characteristics of each interface between product software and system hardware components
Likewise, it defines "User Interfaces" as
'the logical characteristics of each interface between the software product and its users .
So a little reasoning tells us that "System Interface" should be defined as
'the logical characteristics of each interface between a software product and a large system .
This means that "system interfaces" are not larger system interfaces to the outside world, but internal interfaces between software and everything else in a larger system that includes user interfaces, hardware interfaces, and software interfaces.
Ironically, 830-1998 is written so inconsistently that the recommended section hierarchy is:
2. Overall Description
2.1. Product perspective
2.1.1 System Interfaces
2.1.2. User Interfaces
2.1.3. Hardware Interfaces
2.1.4. Software Interfaces
...
where 2.1.1 really should be the parent section 2.1.2 - 2.1.4.
So they gave some vague definitions of the "system interfaces" section:
This should map each system interface and define the software functionality to meet the system requirements and interface description corresponding to the system.
Whoever wrote this, try to get a B from your 12th grade Classic English class!
Anyway, as a non-native speaker, my understanding of the IEEE version of the "System Interface" is as follows:
-
The software can be a stand-alone product for general use (e.g. commercial software, video games, etc.), or it can be part of a larger system that contains both software and hardware. For example, a car is a system, and embedded computer software is only part of the system. Another example is the software in a hospital CT scanner, which is also part of the system (machine).
-
Assuming the system requirement is defined prior to the software requirement (i.e. a top-down approach), consider
a) what functionality does your software require to meet the system requirements? (I can't forget the larger picture)
For example, if the automatic requirement for a car is that "the car should detect sudden decelerations of vehicles in front of the car for 0.1 second", then you may need to write non-functional requirements for your software such as "after software the software receives a "sudden deceleration" signal from the front sensor, it processes the signal and makes decisions. If it is a validated scenario (not a false alarm), then the software should send a hack signal to the fault system. The decision process and signal transmission takes place no more than 0.05 seconds.
b) What are the interfaces between your software and everything else in the larger system?
eg. your car computer software must have the following interface with the front sensor:
public int processFrontSensorSignal(Signal signal){
if (signal.getType() == 1){
SuddenSlowDownSignalProcessor.process(signal);
} else if (signal.getType() == 2){
...
}
else
....
}
Such interfaces should be clearly defined.
If the software is not part of a larger system, or if it is for general software that needs to run on common systems (eg MS Windows applications), then there is no need to specify the System Interfaces section,
source to share
System interfaces include the following: 1. User interfaces, eg. screen format, keys 2. Hardware interfaces, eg. configuration characteristics, supported devices 3. Programming interfaces, eg. OS 4. Communication interface - LAN
In addition, you can enable a high-level view of your system with respect to all of these interfaces.
Let me know if you need more information.
source to share
System interfaces in context means all interfaces that your system will have to fulfill as a target.
Perhaps if your server is using a web service response / queue message or database polling, they can be considered 3 interfaces to your system. The implementation of these interfaces will be SOAP impl, ACTIVEMQ broker and database.
source to share