Software processes are normally characterized by several phases (software phases), and only one of these phases is mainly focused on coding. The other phases are meant to support other parts of software development.
The first of these phases is called Feasibility Study. In this phase, we determine whether the company has the technical expertise to handle completion of the project.
The second phases is called requirements engineering. In this phase we talk to the customer, to the stakeholders, whoever we are building the software for. We try to understand what kind of system we need to build.
Then we use this information to define our design and the design is the high-level structure of our software system.
Once we've defined our design we can actually move to the next phase, which is the implementation, in which we write code that implements the design which we just defined.
After implementing the code, we need to verify and validate the code. We need to make sure that the code behaves as intended.
Finally, we need to maintain the code. Maintenance involves several activities like, for example, adding new functionality or eliminating bugs from the code or responding to problems that were reported from the field after we released the software.
For each activity, we will look at the fundamental principles and how it is done currently.