Quality is not about quantity of work. It is as different as a half baked cake and a fully baked cake.
In my perspective, developing quality software is much like baking. Just because we use quality ingredients doesn't mean that we get a delicious dish. It all depends on the mixing of them in the right quantities and processing them in a right way. The quality of a product depends on a lot of parameters and they have to be maintained without compromise.
Requirements Gathering is the first and most important factor when it comes to software development. It should be complete and clear in every sense. Also all requirements must be economically and technically feasible.
A perfect product needs proper construction (User Interfaces, Backend) and proper processing (Technologies). Quality is ensured using different metrics while testing it. Different types and levels of testing are usually done to ensure that all requirements are met.
Here the developer is like a chef and the coding environment is the oven.
Baking a product is not a cake walk. It should go through different processes. Likewise developing software should go through different stages.
Does a QA team ensure quality of software from scratch?
Yes. From the first level onwards i.e from requirement gathering, a QA team must ensure the quality. Crystal clear idea about each piece of information/ requirements to be met gathered from client, the methods (technologies to be used to fulfil the requirements) that are used to bake the stuff in order to get the delicious and enriched quality product (i.e user friendly/user experience, scalable, stable, reliable, etc).
Quality of the product is measured from the perspective of customer/client, end users/people and engineers (developers and QAs).
Time need to bake the product, Cost of the product, Customer satisfaction are considered from Customer's perspective.
User friendliness and fulfilment of requirements are considered from End user's/People perspective.
Quality of code, deliverables, internal structure, reviews are considered from Engineer’s perspective.
A quality product can be developed by considering functional and non-functional parameters. Functional Quality parameters define how well the software meets functional requirements specified by client /in a real situation. Non Functional Quality parameters define how the code and internal structure of application supports the functional requirements.
The following are some of the most important parameters while considering software quality.
In summary quality of software is the sum of all quality parameters, functional and non-functional that should be met at all level of the product life cycle.