Nowadays there are a lot of roles in a software project. And somebody unavoidably must implement these tasks.
In small companies (for example, one-person development organization) all of these positions will be performed by a single person. That person designs, develops, conducts software testing of his own code and sells it.
In other companies, the work may be combined and distributed between different people, depending on the specific talents of them.
The organization may also consist of hundreds of people. All of the following functions must be filled in any software development attempt, and no matter large it or small.