When organizations start developing requirements for a software application, they need to focus on the right size and right functionality. They need to think right about software.
Since most software organizations do not know what they are capable of delivering, they over-build requirements; they get in over their heads. A software development organization needs to determine what it is capable of delivering within a given time frame and budget. If a company is only capable of delivering 1,500 function points every six months, then there is no sense in creating requirements representing 10,000 function points. One of the reasons many software projects fail is due to software organizations over-committing. Too often, they commit to a software project when there is no possible way of staying within budget or within the specified time frame.
This is no different than going to buy a car and not knowing how much money you have to spend on a car. One of the first questions a car salesman asks you is, “How much money do you want to spend?” They may not ask this question directly, but they are trying to size you up to determine your budget.
The salesman does not want to waste time trying to sell you a car that you cannot afford. A car salesman may try to get you to spend ten or fifteen percent more than you want to on a car, but he or she does not try to get you to spend 300% more on a car.
The same is true if you are building a house. There is no reason to have an architect draw plans for a house that is way beyond your budget. In some cases, you could spend your entire budget on just the architectural drawings. This happens in software projects too often. All the money is spent on requirements and design, and there is nothing left to build the actual product. The reason for this is the software organization have no idea of what it is capable of delivering per unit of time.
The core business needs to provide how much it is willing to spend on a software development project, and the software organization needs to determine what can be done. One of the first things a software development organization needs to understand is the budget and timeline. Ultimately, the software product has to fit into the box of budget and schedule. It is illogical to develop a set of requirements that cannot be implemented in the allotted amount of time or budget. It is foolish for the core business to fund a software project that is beyond its financial means.