The discipline of software engineering encompasses a variety of activities essential to the creation and maintenance of software products. These activities include the development of new software, modification of existing programs, and reuse of code.