The seven fundamental roles of any software project
A software project is a complicated and dynamic process. No matter which methodology you adopt, it's difficult to deliver a software project on time and on budget and to the required quality, not least because seemingly everything changes along the way.
One of the key foundations of any software project is to have all of the necessary stakeholders identified and their roles agreed upon early on. This establishes the purpose and value of each contributor, and when they are required by the project.
Similar to software development methodologies, there are many differing views on this particular topic, partly because software projects are so unique. Each project is so different from another, even if it's being delivered by the same people. No business problem is exactly the same. So, no solution, nor how it's developed and implemented, is ever identical.
However, if you zoom out of individual projects, there are patterns that can be used to generalize some aspects of their commonalities, to some degree, even standardizing their attributes and deliverables. After all, that is one of the key benefits of methodologies.
The classification and definition of the project team members' roles is such a generalization. While it's not a hard and fast set of rules, it establishes a common language, terminology, and understanding, which makes communication and expectation setting easier.