Software Engineering is an engineering discipline that is concerned with: (1) how computer systems work. (2) theories and methods that underlie computers and software systems. (3) all aspects of software production. (4) all aspects of computer-based systems development, including hardware, software and process engineering.