The term refers to the process of writing and maintaining the source code, but in a broader sense of the term, it includes all that is involved between the conception of the desired software through to the final manifestation of the software, ideally in a planned and structured process.