Quote:
Originally Posted by Aaron Van
This might be a subjective question, but is software engineering encapsulated within software development or are they separate disciplines?
That sounds a good question to me. Not totally sure whether my understanding is correct (then I will need to scour for those dust-covered software engineering textbooks for that), but here is my interpretation of some terminologies:
- Programming is the action of assembling instructions to realize some desired functionality, the exact instructions and syntax of which depending on the language and environment involved.
- Software development is a process which spans the entire software lifecycle, in which some software is built as deliverables as part of the process. Programming is the most important part of the process, but is just one part of the process. Planning, testing etc. are also part of the software development process. Post-development such as customer support, post-development reviews and maintenance are usually considered part of the software lifecycle, and thus should be considered part of the software development process as well.
- Software engineering refers to the application of engineering principles to the software development process, to result in software whose functionalities meeting the prescribed specifications, whose quality can be objectively quantized, and development costs can be within budget. It is just like the process of constructing a house. You won't leave until you have started the process and find that the bricks cannot support the walls. For software, identically, some engineering planning process precedes the implementation stage to ensure that the process may result in software that is implemented correctly, on time and within budget.
So software engineering is usually seen as a more "scientific" or "systematic" means to build software, as opposed to a more ad-hoc fashion as amateur developers usually do.