It is said that that there is no such thing as a stupid question - only stupid answers. But some questions are better than others for software design, and this is where the acronym ‘FURPS’ comes in.
- Function requirements: What’s the system really intend to do?
- Usability: Who’s going to use it and why? Note this is not HOW.
- Reliability: How can this fail, should fail, and how should it recover.
- Performance: How fast and how many users? A releated question is how scalable should the solution realistically be?
- Supportability: How maintainable is the solution?
The other important things to consider during design and which factor in to design questions are:
- Timelines: What are the timelines for delivery - this has major impacts on what can be delivered, what technology to use, what design patterns are applicable and even is the project fesible at all.
- Accounting: Yes this is money and despite what we like to think as designers and developers, money underpins most projects. Technology costs; cost to develop, cost to maintain and update. You might not have the budget to use that fancy new DB you have been itching to try.
- Rresources: What people, systems, support or available and when.