User requirements are determined first. They are written to the SRS and serve as a basis of analysis.
Here we start with a short overview of the application to be developed. Based on this description, more detailed requirements should be developed.
These are high-level requirements of the system which are also called user requirements. After gathering them, an analysis process should be performed in order to develop a deeper understanding of the problem domain. During analysis, basic building blocks of the functionalities are identified and described as system requirements. The main difference between system and user requirements are that while the latter describes exptectations using domain-specific concepts mainly, the former uses computer science terminology. During analysis, domain-specific concepts are "translated" onto a more specific language that various kinds of development team members (architects, programmers, testers, etc.) understand.
A user requirement might be described by several system requirements. An example for that is adding a new product to an existing order: it requires a lookup (or a form-based search) among existing products and the total price of the order should be re-calculated. Different user requirements might result in the same system requirement after analysis like in the case of sending a newsletter and sending a registration confirmation email: from the system's perspective, these two functionalities are quite the same (send an e-mail to a given address), only the text of e-mails will vary.
As it has been noted earlier, Unambiguity. can be achieved by providing a glossary that defines the terms used in the specification. This is extremely important in such cases when some terms have a meaning in the vulgar tongue but we would like to use the same term in a more constraining manner. Using a glossary, terms can be precisely defined and then used in a well-defined and consistent manner throughout the whole documentation os the software. The glossary should be described in Section 1.3 of the SRS (see Figure Recommended structure for SRS documents).
When a need for a new software emerges, the person (or people) responsible for gathering the requirements (based on the size of the software development organization and many other factors they can be business analysts (BA) or system architects) should consult with the future customers or end users of the system. They have imaginations and expectations about how they would like to make use of the system, about how the system should work.
For our case study (as we would like to keep our example simple), we do not have any opportunity to consult with end users, therefore, we will determine what functionalities a real customer would expect. Let us imagine that we are the end users of our software system to be developed. What would our expectations be against such a system? How would we like to use it? What functionalities do we need?
The system of our study is an online book and DVD store. What are the main scenarios that various system users might execute? We (as customers of an online shop) would like to browse among products. For example, the system should present us a list of products. We can scroll up and down and make selections. We would also like to perform various search operations, if we have in idea about one or more attributes or characteristics of the product. If the search result contains too many items, we would like to refine the search. If some more information needed about a certain product, we would like to view its details. If some of the products are fancy to us, we would like to save them to our own bookshelf or, rather, we would like to buy them. We would like to be able to place an order, confirm an order or cancel it. We would like to choose a payment method for the order. We would like to be informed about our pending orders to know when they will be delivered. We would like to receive offers on discounts and be notified on some interesting titles via email. We would like to share our experiences about certain products, or we are curious about the people's opinion on certain items. Last but not least, we would like to give feedback on either the product or the process how we get it.
Now, we have all the customers’ imaginations and expectations in a nutshell. The system, however, will not work without any support. Under such a support, we mean someone who decides about products to be managed and sold by the system, someone who makes decisions about product prices and various kinds of discounts, someone who keeps the customers informed about action offers, someone who maintains products, someone who deals with customer relationship.
Besides customers, we identified two other groups of users from different aspects. One of them is the manager who makes business decisions. The other one is the administrator who should maintain the system itself and also the most important system elements besides customers—namely, the products for sale.