Software engineering is the discipline in computer science focused on developing large and complex software systems using methodologies to ensure quality, reliability, and efficiency. Key principles include maintainability, reliability, user-friendliness, and modularity, while common software process models include the waterfall, spiral, and prototyping models. Each model has its own advantages and disadvantages, impacting requirements analysis, design, and testing phases.