Software Engineering is a computing science as well as an engineering discipline based on requirement analysis, design, construction, testing, maintenance, and managing the economics of software engineering. It is relatively a recent discipline that applies the principles of computer science, mathematics, and engineering to achieve high quality and cost-efficient solutions to software problems in a systematic, controlled, and effective manner.