Software engineering is the application of systematic, disciplined, and quantifiable approaches to software development, operation, and maintenance. It involves practices like requirements analysis, architecture design, construction, testing, deployment, maintenance, and configuration management. There are two major approaches to software development processes - sequential (like waterfall) and iterative (like SCRUM). Key activities in processes include requirements gathering, architecture, detailed design, construction, testing, deployment, maintenance, and configuration management using tools like issue trackers and source code repositories. Effective software engineering requires cross-functional teams where members communicate well, take responsibility, and manage their time.