Software Engineering is a systematic collection of good program development practices and techniques. Good program development techniques have resulted from research innovations. The lessons learnt by programmers through years of programming experience. It is a systematic and cost-effective technique for software development. These techniques help to develop software using an engineering approach.
Is Software Engineering a Science or an Art?
i. Just as any other engineering discipline, software engineering makes heavy use of knowledge. It has accrued from a large number of practitioners’ experiences. These past experiences have been systematically organised. Wherever possible theoretical basis for the empirical observations has been provided. Whenever no reasonable theoretical justification could be provided, past experiences have been adopted as a rule of thumb.
ii. As is usual in all engineering disciplines, several conflicting goals encounter in software engineering while solving a problem. In such situations, at first, several alternate solutions propose. An appropriate solution chooses out of the candidate solutions based on various trade-offs. It needs to make on account of cost, maintainability, and usability issues. Therefore, while arriving at the final solution, several iterations are possible.
iii. Engineering disciplines such as software engineering make use of only well-understood and well-documented principles. On the other hand, art is often based on making a subjective judgment. It is based on qualitative attributes and uses ill-understood principles.