 previous video, we explored the Amazon e-commerce web page and also identified some components. Okay, so now I understood that there are different components to a software system. But it's also interesting to understand how Amazon implements each of these components. For example, how did they come up with the Amazon Pay feature? Amazon Pay is a mobile wallet. A mobile wallet is a way to carry cash in digital format. You can link your credit card or debit card information as well as your bank accounts to a mobile wallet application or you can transfer money online to your mobile wallet. Instead of using your debit or credit card to make purchases, you can pay with your smartphone which has this mobile wallet. There are many categories like recharges, bill payments, travel and insurance, rewards, gift vouchers and so on. A mobile wallet has features such as adding money and auto reload as well. So how did they start building the system? How did they come up with all these functionalities? That is an important question. What do you think is the first step in creating a software? Pause and reflect on this question, write the answer in your notebook. Some of you would have thought that we first need to learn a programming language. That is in a way true. You need to write code for the software using a programming language. But even before you start thinking of the solution, you would need to think what is the problem that you want to solve. Another answer can be that we need to study existing systems and components. For example, in Amazon we saw the components inventory management and payment gateway. Amazon's can give us an idea of how a payment gateway will interact with the software. That's right. Maybe I can also look at other wallet systems like PayTM, PhonePay, etc. and see how they have implemented various features. All these are valid answers. We need to first understand what is the problem that we want to solve and based on the analysis of existing and similar systems, we need to come up with an explicit set of goals that the implementation should solve. These goals are called the requirements of the software system and this is usually the first step in the software development process. Ultimately, these software components will be used by someone and these users are known as the clients of the software system. So we need to ensure that these requirements cater to the needs of these users. Okay. So who is a client? Should they necessarily be end users of the system? Well, not necessarily. They can be an external user. They can be internal to your company and they can even be another software. A client can be an external user. This is the most typical way to think about clients. For example, a mobile banking software serves customers of the bank by providing various banking features such as checking the account balance and transferring money. A client may be internal to your company. For example, a company might want to build an employee resource portal which contains information about various employees and teams in the company. To build such a system, the company might form an internal products team which communicates with other departments like human resources to understand the requirements. The client can be another software system as well. For example, a payment gateway like razor pay interfaces with another e-commerce website or app to handle customer payments and refunds. Customer details are sent to the payment gateway by the e-commerce website. The payment gateway communicates with the customer's bank and sends the response back to the e-commerce website. So think about who is going to use your software for what purpose and in what way. The persona of the intended user that is a client must be alive in your mind as you think about who you are going to create the software for. So to summarize, the first step in software development process is to gather requirements. The requirements need to be gathered by the end users of the software. These users are usually called as clients and we need to ensure that the requirements capture the needs of the client.