Software can impact many aspects of society and is found almost everywhere. Common problems in software development include projects not fulfilling customer needs, being difficult to extend and improve, lacking documentation, and having poor quality. Software engineering aims to produce software on time, reliably, and completely by applying a systematic and disciplined approach.