This document discusses software engineering and provides definitions and explanations of key concepts: - Software engineering is defined as an engineering discipline concerned with all aspects of software production. It focuses on practical software development and delivery, whereas computer science focuses more on theory. - Good software should deliver required functionality, performance, and be maintainable, dependable, usable and acceptable to users. - A software engineering approach is layered, with quality, process models, methods and tools. Process models define activities for effective delivery. Methods provide tasks for requirements, design, coding and testing. Tools support the process and methods. - Generic software processes involve communication, planning, modeling, construction and deployment activities in an iterative fashion to develop