Software engineering is the process of developing software through systematic principles and methods. Software is indispensable in today's world and is used in both general computing devices like PCs as well as embedded in other equipment like phones. For software to function properly, it must be engineered well with attributes like being usable, reliable, maintainable and efficient. Software engineering aims to improve the software development environment through principles and processes that help produce high-quality software.