Software Engineering is a systematic collection of good program development practices and techniques. Good program development techniques have resulted from research innovations as well as from the lessons learnt by programmers through years of programming experiences. Software engineering 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 the knowledge that has accrued from a large number of practitioners’ experiences. These past experiences have been systematically organised and wherever possible theoretical basis to the empirical observations have 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 are encountered in software engineering while solving a problem. In such situations, several alternate solutions are first proposed. An appropriate solution is chosen out of the candidate solutions based on various trade-offs that need to be made on account of cost, maintainability, and usability issues. Therefore, while arriving at the final solution, several iterations and 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 based on qualitative attributes and using ill-understood principles.