Software engineering is a systematic approach to software development that accounts for practical issues like costs and schedules while meeting customer needs. It involves activities like specification, development, validation, and evolution. The discipline has expanded to include web-based systems and services. Ethical practices like protecting intellectual property and customer data are important for professional software engineers.